Heim >Datenbank >MySQL-Tutorial >Wie transponiere ich Daten in SQL mithilfe von CASE-Anweisungen?

Wie transponiere ich Daten in SQL mithilfe von CASE-Anweisungen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-05 04:36:39783Durchsuche

How to Transpose Data in SQL Using CASE Statements?

Daten in einer SQL-Tabelle mithilfe von Case-Anweisungen transponieren

In SQL bezieht sich das Transponieren von Daten auf das Konvertieren eines Datensatzes, bei dem Zeilen und Spalten vertauscht werden. So transponieren Sie eine Tabelle mit einer ähnlichen Struktur wie der bereitgestellten:

Id UserId FieldName FieldValue
1 100 Username John Doe
2 100 Password pass123!
3 102 Username Jane
4 102 Password $ecret
5 102 Email Address [email protected]

in eine transponierte Form:

UserId Username Password Email Address
100 John Doe pass123!
102 Jane $ecret [email protected]

Ein Ansatz besteht darin, mehrere CASE-Anweisungen zusammen mit Group-By-Klauseln zu verwenden:

SELECT t.userid
       MAX(CASE WHEN t.fieldname = 'Username' THEN t.fieldvalue ELSE NULL END) AS Username,
       MAX(CASE WHEN t.fieldname = 'Password' THEN t.fieldvalue ELSE NULL END) AS Password,
       MAX(CASE WHEN t.fieldname = 'Email Address' THEN t.fieldvalue ELSE NULL END) AS Email
  FROM TABLE t
GROUP BY t.userid

Diese Abfrage berechnet den Maximalwert für jede Benutzer- und Feldkombination. Die CASE-Anweisungen definieren, welcher Feldwert basierend auf dem Wert des FieldName-Felds zurückgegeben werden soll.

Diese Methode erfordert jedoch die Definition von CASE-Anweisungen für jeden spezifischen Feldnamen. Erwägen Sie für eine dynamische Lösung die Verwendung der Prepared Statement-Syntax (dynamisches SQL) von MySQL zum Generieren der Abfrage.

Das obige ist der detaillierte Inhalt vonWie transponiere ich Daten in SQL mithilfe von CASE-Anweisungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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