首頁 > 資料庫 > mysql教程 > 如何使用資料透視查詢在 SQL 中將行轉置為列?

如何使用資料透視查詢在 SQL 中將行轉置為列?

Barbara Streisand
發布: 2025-01-03 04:25:42
原創
822 人瀏覽過

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

SQL 將行轉置為列:透視解決方案

在SQL 中,將行轉置為列是重塑表格資料的有用技術。給定一個表,其中行代表資料點,列代表變量,您可能會遇到需要切換資料方向的場景。

其中一個場景,如問題中所述,涉及包含答案和問題的表格。目標是將回應資料轉置為柱狀格式,其中每個問題變成一列,每個使用者對該問題的回應顯示在相應的行中。

要實現這種轉置,您可以利用已知的技術作為「樞軸查詢」。以下 SQL 語句示範了使用 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
登入後複製

此查詢使用條件聚合會根據問題 ID 對回應值進行分組和聚合。 CASE 語句提取每個問題的答案並將其指派到特定欄位。 MAX() 函數用於確保僅包含每個問題-使用者對的最新回應。

此查詢的輸出將類似於所需的轉置格式,其中每個使用者的ID 列在第一個中列,後面跟著每個問題的一列,其中包含使用者的回應(如果不存在回應,則為NULL)。

此資料透視查詢是在 SQL 中將行轉置為列的標準方法。它提供了一個高效、靈活的解決方案,用於動態處理任意數量的問題和回應組合。

以上是如何使用資料透視查詢在 SQL 中將行轉置為列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板