首頁 > 資料庫 > mysql教程 > 如何使用 MAX() 和 CASE 語句將 MySQL 列資料轉換成行?

如何使用 MAX() 和 CASE 語句將 MySQL 列資料轉換成行?

DDD
發布: 2024-12-17 11:01:25
原創
429 人瀏覽過

How to Pivot MySQL Column Data into Rows Using MAX() and CASE Statements?

將MySQL 資料透視表列資料顯示為行

將表格的資料列資料轉換為行可能是一項具有挑戰性的任務,尤其是對於多維資料集。在 MySQL 中,此操作通常稱為「透視」。

問題:

提供的資料集由三個表格組成:

  • 問題:商店問題標題。
  • 結果: 記錄使用者對特定職位 ID 的回應。
  • 答案: 包含每個問題和結果組合的答案。

目標是重組資料以將問題答案顯示為每個結果的列set.

解決方案:

要實現此目的,我們可以利用MySQL 查詢,該查詢將MAX() 聚合函數與CASE 語句結合使用。下面的查詢有效地將列資料轉換為行:

解釋:

  • 查詢從Results (a) 表中選擇各個字段,包括結果ID、使用者ID 和作業ID。
  • 然後使用 INNER JOIN 從答案 (b) 表。
  • 另一個 INNER JOIN 連結到問題 (c) 表,以識別每個答案的實際問題。
  • MAX() 函數在 CASE 語句中應用聚合每個結果和問題組合的答案。
  • 最後,結果會按結果 ID、使用者 ID 和作業 ID 分組以建立所需的行結構。

此查詢產生以下輸出:

result_id user_id job_id Is it this? Or this? Or that?
1 1 1 Yes No Maybe
2 1 3 Maybe No Maybe
3 2 3 Yes Yes No

動態版本:

如果您有未知數量的問題(例如,1000 ),動態版本的查詢較為合適。這可以使用動態 SQL 和變數串聯來實現:

此動態查詢使用變數串聯根據 Question 表的內容動態建立 SQL 語句。結果是一個更靈活的查詢,可以處理任意數量的問題。

以上是如何使用 MAX() 和 CASE 語句將 MySQL 列資料轉換成行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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