Heim > Datenbank > MySQL-Tutorial > Wie kann ich Zeilen in SQL für Benutzerantworten in Spalten umwandeln?

Wie kann ich Zeilen in SQL für Benutzerantworten in Spalten umwandeln?

Linda Hamilton
Freigeben: 2025-01-05 17:01:42
Original
885 Leute haben es durchsucht

How to Pivot Rows into Columns in SQL for User Responses?

SQL-Transponierung von Zeilen als Spalten

Das Transponieren von Zeilen in Spalten in SQL ist eine Technik, mit der Sie eine Tabelle mit zeilenorientierten Daten konvertieren können in eine Tabelle mit spaltenorientierten Daten. Diese Technik wird allgemein als Pivotieren bezeichnet.

In Ihrem spezifischen Szenario haben Sie zwei Tabellen:

  • Antworten: Enthält die Benutzerantworten auf Fragen.
  • Fragen: Enthält die tatsächlichen Fragen.

Ihr Ziel ist es, die Tabelle „Antworten“ so zu transponieren, dass die Antworten jedes Benutzers auf verschiedene Fragen als Spalten und nicht als Zeilen angezeigt werden.

Schritt-für- Schritt Lösung:

Um die gewünschte Transposition zu erreichen, können Sie eine Kombination aus Verknüpfungen und Bedingungen verwenden Aggregation:

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

Erklärung:

  • Die Abfrage verknüpft zunächst die Tabellen „responses“ und „questions“ in der Spalte „question_id“, die verknüpft ist jede Antwort auf die entsprechende Frage.
  • Anschließend wird die bedingte Aggregation mit der Funktion MAX() verwendet, um den maximalen Antwortwert für abzurufen jede Kombination aus Benutzer und Frage.
  • Die CASE-Anweisung prüft die Frage-ID und gibt den Antworttext zurück, wenn er mit der ID übereinstimmt.
  • Schließlich gruppiert die GROUP BY-Klausel die Ergebnisse nach Benutzer-ID und stellt so sicher dass die Antworten jedes Benutzers zusammengefasst werden.

Beispielergebnis:

user_id | Do you like apples? | Do you like oranges? | Do you like carrots?
-------- | ------------------ | ------------------- | -------------------
1       | Yes                 | Yes                  | No
2       | Yes                 | No                   | No
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Zeilen in SQL für Benutzerantworten 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