In der Datenbankverwaltung ist Pivotieren eine Methode zum Konvertieren von Daten vom Langformat (wobei jede Zeile eine einzelne Beobachtung mit mehreren Attributen darstellt) in das Breitformat (wobei jede Zeile ein anderes Attribut darstellt und die Spalten deren Werte darstellen). Attribute) ) Technologie. Dieses Verfahren ist besonders nützlich, wenn Sie mit Tabellen arbeiten, die Daten im Langformat speichern (wie unten gezeigt):
<code>## studid ## ## subjectid ## ## marks ## A1 3 50 A1 4 60 A1 5 70 B1 3 60 B1 4 80 C1 5 95</code>
Frage:
Das Ziel besteht darin, die obige Tabelle in ein breites Format umzuwandeln, in dem jeder Schüler eine Zeile mit seinem Namen und seiner Punktzahl für jedes Fach hat. Die gewünschte Ausgabe sollte so aussehen:
<code>## studid ## ## name## ## subjectid_3 ## ## subjectid_4 ## ## subjectid_5 ## A1 Raam 50 60 70 B1 Vivek 60 80 NULL C1 Alex NULL NULL 95</code>
Lösung mit CASE-Anweisung und GROUP BY-Klausel:
Eine Möglichkeit, dies in SQLite zu erreichen, besteht darin, eine CASE-Anweisung in Kombination mit einer GROUP BY-Klausel zu verwenden:
<code class="language-sql">SELECT si.studid, si.name, SUM(CASE WHEN md.subjectid = 3 THEN md.marks END) AS subjectid_3, SUM(CASE WHEN md.subjectid = 4 THEN md.marks END) AS subjectid_4, SUM(CASE WHEN md.subjectid = 5 THEN md.marks END) AS subjectid_5 FROM student_info si JOIN markdetails md ON md.studid = si.studid GROUP BY si.studid, si.name;</code>
Lösung mit Left Outer Join:
Ein anderer Ansatz besteht darin, einen linken äußeren Join zu verwenden, um Schülerinformationen und Ergebnisse für jedes Fach zu kombinieren:
<code class="language-sql">SELECT u.stuid, u.name, s3.marks AS subjectid_3, s4.marks AS subjectid_4, s5.marks AS subjectid_5 FROM student_info u LEFT OUTER JOIN markdetails s3 ON u.stuid = s3.stuid AND s3.subjectid = 3 LEFT OUTER JOIN markdetails s4 ON u.stuid = s4.stuid AND s4.subjectid = 4 LEFT OUTER JOIN markdetails s5 ON u.stuid = s5.stuid AND s5.subjectid = 5;</code>
Beide SQL-Abfragen generieren die erforderlichen Breitformattabellen, was die Analyse und Visualisierung der Daten erleichtert.
Das obige ist der detaillierte Inhalt vonWie kann ich Daten in SQLite vom Lang- ins Breitformat umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!