Heim > Datenbank > MySQL-Tutorial > Wie kann ich Daten in SQLite vom Lang- ins Breitformat umwandeln?

Wie kann ich Daten in SQLite vom Lang- ins Breitformat umwandeln?

Susan Sarandon
Freigeben: 2025-01-10 12:51:46
Original
517 Leute haben es durchsucht

How to Pivot Data from Long to Wide Format in SQLite?

SQLite-Datenbank-Pivot: Konvertieren Sie Daten im Langformat in Daten im Breitformat

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage