首頁 >資料庫 >mysql教程 >如何在 SQL 中將行轉換為列以取得使用者回應?

如何在 SQL 中將行轉換為列以取得使用者回應?

Linda Hamilton
Linda Hamilton原創
2025-01-05 17:01:42912瀏覽

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

SQL 將行轉置為列

在SQL 中將行轉置為列是一種允許您轉換具有面向行資料的表的技術到具有面向列的資料的表中。這種技術通常稱為資料透視。

在您的特定場景中,您有兩個表格:

  • 回應:包含使用者對問題的回應。
  • 問題:包含實際狀況問題。

您的目標是調換「回應」表,以便每個使用者對不同問題的回答顯示為列,而不是行。

逐步-步驟解決方案:

要實現所需的轉置,可以使用連接和條件的組合聚合:

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;

解釋:

  • 查詢首先連接「question_id」欄位上的「responses」和「questions」表,該列連結每個對其對應問題的回答。
  • 然後使用 MAX() 函數的條件聚合來檢索每個使用者和問題組合的最大回應值。
  • CASE 語句檢查問題 ID,如果與 ID 匹配,則傳回回應正文。
  • 最後,GROUP BY 子句會以以下方式將結果分組使用者 ID,確保每個使用者的回應聚合在一起。

範例結果:

user_id | Do you like apples? | Do you like oranges? | Do you like carrots?
-------- | ------------------ | ------------------- | -------------------
1       | Yes                 | Yes                  | No
2       | Yes                 | No                   | No

以上是如何在 SQL 中將行轉換為列以取得使用者回應?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn