Konvertieren Sie Zeilen in Spalten in MySQL

Preet Sanghavi 20 Juni 2023
  1. Erstellen Sie einen Datensatz in MySQL
  2. Konvertieren Sie Zeilen in Spalten in MySQL mit der CASE-Anweisung
  3. Konvertieren Sie Zeilen in Spalten in MySQL mit der Anweisung IF
Konvertieren Sie Zeilen in Spalten in MySQL

In diesem Tutorial lernen wir, wie man Zeilen in Spalten einer bestimmten Tabelle in MySQL umwandelt.

Erstellen Sie einen Datensatz in MySQL

Es ist häufig erforderlich, die geeigneten Informationen zu erhalten, die mit den erforderlichen Zeilendaten verbunden sind, die als Spalten angezeigt werden. Lassen Sie uns verstehen, wie Sie dies erreichen können.

Bevor wir jedoch beginnen, erstellen wir einen Dummy-Datensatz, mit dem wir arbeiten können. Hier erstellen wir eine Tabelle, student_details, zusammen mit einigen Zeilen.

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

Die obige Abfrage erstellt eine Tabelle und Zeilen mit den Vor- und Nachnamen der Schüler. Um die Einträge in den Daten anzuzeigen, verwenden wir den folgenden Code:

SELECT * FROM student_details;

Der obige Code würde die folgende Ausgabe liefern:

stu_id  stu_firstName   stu_lastName
1         Preet         Sanghavi
2         Rich          John
3         Veron         Brow
4         Geo           Jos
5         Hash          Shah
6         Sachin        Parker
7         David         Miller

Konvertieren Sie Zeilen in Spalten in MySQL mit der CASE-Anweisung

Die grundlegende Syntax der CASE-Technik lässt sich wie folgt veranschaulichen.

SELECT
column_name
    SUM(CASE WHEN stu_firstName = "Preet" THEN 1 ELSE 0 END) AS Preet_Present
   FROM
    table_name
    GROUP BY
column_name;

Lassen Sie uns nun überprüfen, ob die Schüler mit den Namen Preet, Rich und Veron in der Klasse anwesend sind oder nicht. Außerdem werden wir versuchen, die Ergebnisse so darzustellen, dass Zeilen mit der oben genannten Technik in Spalten umgewandelt werden.

Diese Operation kann mit der folgenden Abfrage durchgeführt werden,

SELECT
stu_firstName,
    SUM(CASE WHEN stu_firstName = "Preet" THEN 1 ELSE 0 END) AS Preet_Present,
    SUM(CASE WHEN stu_firstName = "Rich" THEN 1 ELSE 0 END) AS Rich_Present,
    SUM(CASE WHEN stu_firstName = "Veron" THEN 1 ELSE 0 END) AS Veron_Present
   FROM
    student_details
    GROUP BY
stu_firstName;

Wie wir sehen können, zielen wir in der obigen Abfrage darauf ab, die Zeilen in Spalten wie Preet_present, Rich_present und Veron_present umzuwandeln. Die Ausgabe der oben erwähnten Abfrage wird wie folgt dargestellt.

SELECT DISTINCT
    COUNT(DISTINCT IF(stu_firstName like '%reet',
            stu_id,
            NULL)) AS count_student_ids
FROM student_details;

Der obige Code zählt die Anzahl der unterschiedlichen stu_id aus der student_details-Tabelle, vorausgesetzt, dass stu_firstName mit reet in der IF-Klausel endet. Die Ausgabe des obigen Codes lautet wie folgt:

stu_firstName   Preet_Present   Rich_Present Veron_Present
Preet           1                   0           0
Rich            0                   1           0
Veron           0                   0           1
Geo             0                   0           0
Hash            0                   0           0
Sachin          0                   0           0
David           0                   0           0

Hinweis: Der obige Code verwendete die Aliasnamen Preet_Present, Rich_Present und Veron_Present mit dem Schlüsselwort AS.

Eine Alternative zur CASE-Technik ist die IF-Technik, die uns helfen kann, ähnliche Ergebnisse zu erzielen.

Konvertieren Sie Zeilen in Spalten in MySQL mit der Anweisung IF

Eine IF-Anweisung filtert Daten basierend auf einer bestimmten Bedingung oder einer Reihe von Bedingungen in MySQL. Die grundlegende Syntax zum Konvertieren von Zeilen in Spalten in MySQL mit der Anweisung IF kann wie folgt veranschaulicht werden.

SELECT
column_name,
    SUM(IF(column_name= "something", do_this, else_do_this)) AS Preet_Present
   FROM
    table_name
    GROUP BY
column_name;

Wie die obige Abfrage zeigt, haben wir die Operation do_this ausgeführt, wenn die Bedingung IF True zurückgibt. Wenn die IF-Bedingung False zurückgibt, führen wir die else_do_this-Operation aus.

Wir können die folgende Abfrage für unsere Tabelle student_details verwenden, um das gewünschte Ergebnis zu erhalten.

SELECT
stu_firstName,
    SUM(IF(stu_firstName = "Preet", 1, 0)) AS Preet_Present,
    SUM(IF(stu_firstName = "Rich",1,0)) AS Rich_Present,
    SUM(IF(stu_firstName = "Veron", 1,0)) AS Veron_Present
   FROM
    student_details
    GROUP BY
stu_firstName;

Die Ausgabe der obigen Abfrage kann wie folgt dargestellt werden.

stu_firstName   Preet_Present   Rich_Present Veron_Present
Preet           1                   0           0
Rich            0                   1           0
Veron           0                   0           1
Geo             0                   0           0
Hash            0                   0           0
Sachin          0                   0           0
David           0                   0           0

Daher können wir mit Hilfe der CASE- und IF-Anweisungen die Zeilen in MySQL effizient in Spalten umwandeln.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Verwandter Artikel - MySQL Row

Verwandter Artikel - MySQL Column