Heim > Datenbank > MySQL-Tutorial > Wie kann ich in SQL mithilfe einer Pivot-Abfrage Zeilen in Spalten umwandeln?

Wie kann ich in SQL mithilfe einer Pivot-Abfrage Zeilen in Spalten umwandeln?

Barbara Streisand
Freigeben: 2025-01-03 04:25:42
Original
822 Leute haben es durchsucht

How Can I Transpose Rows into Columns in SQL Using a Pivot Query?

SQL Transponieren von Zeilen als Spalten: Eine schwenkbare Lösung

In SQL ist das Transponieren von Zeilen als Spalten eine nützliche Technik, um Tabellendaten umzuformen. Bei einer Tabelle mit Zeilen, die Datenpunkte darstellen, und Spalten, die Variablen darstellen, können Szenarien auftreten, in denen die Ausrichtung der Daten geändert werden muss.

Ein solches Szenario, wie in der Frage beschrieben, umfasst Tabellen mit Antworten und Fragen . Das Ziel besteht darin, die Antwortdaten in ein Spaltenformat zu übertragen, in dem jede Frage zu einer Spalte wird und die Antwort jedes Benutzers auf diese Frage in der entsprechenden Zeile angezeigt wird.

Um diese Umsetzung zu erreichen, können Sie eine bekannte Technik verwenden als „Pivot-Abfrage“. Die folgende SQL-Anweisung zeigt eine Lösung mit PostgresSQL:

SELECT r.user_id,
       MAX(CASE WHEN r.question_id = 1 THEN r.body ELSE NULL END) AS "Do you like apples?",
       MAX(CASE WHEN r.question_id = 2 THEN r.body ELSE NULL END) AS "Do you like oranges?",
       MAX(CASE WHEN r.question_id = 3 THEN r.body ELSE NULL END) AS "Do you like carrots?"
FROM RESPONSES r
JOIN QUESTIONS q ON q.id = r.question_id
GROUP BY r.user_id
Nach dem Login kopieren

Diese Abfrage verwendet bedingte Aggregation, um die Antwortwerte basierend auf der Fragen-ID zu gruppieren und zu aggregieren. Die CASE-Anweisungen extrahieren die Antworten für jede Frage und weisen sie bestimmten Spalten zu. Die Funktion MAX() wird verwendet, um sicherzustellen, dass nur die neueste Antwort für jedes Frage-Benutzer-Paar enthalten ist.

Die Ausgabe dieser Abfrage ähnelt dem gewünschten transponierten Format, bei dem die ID jedes Benutzers zuerst aufgeführt wird Spalte, gefolgt von einer Spalte für jede Frage, die die Antwort des Benutzers enthält (oder NULL, wenn keine Antwort vorhanden ist).

Diese Pivot-Abfrage ist ein Standardansatz zum Transponieren von Zeilen als Spalten in SQL. Es bietet eine effiziente und flexible Lösung für die dynamische Bearbeitung einer beliebigen Anzahl von Fragen und Antwortkombinationen.

Das obige ist der detaillierte Inhalt vonWie kann ich in SQL mithilfe einer Pivot-Abfrage Zeilen in Spalten 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