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
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!