MySQL 中的交叉表或資料透視查詢可讓您將資料(通常從面向行的結構)轉換為面向專欄的,有利於更輕鬆的分析和演示。要了解如何使用交叉表查詢,讓我們深入研究一個實際範例。
考慮具有以下結構的表:
app_id transaction_id mobile_no node_id customer_attribute entered_value 100 111 9999999999 1 Q1 2 100 111 9999999999 2 Q2 1 100 111 9999999999 3 Q3 4 100 111 9999999999 4 Q4 3 100 111 9999999999 5 Q5 2 100 222 8888888888 4 Q4 1 100 222 8888888888 3 Q3 2 100 222 8888888888 2 Q2 1 100 222 8888888888 1 Q1 3 100 222 8888888888 5 Q5 4
您想要在下面顯示這些記錄格式:
app_id transaction_id mobile Q1 Q2 Q3 Q4 | Q5 100 111 9999999999 2 1 4 3 2 100 222 8888888888 3 1 2 1 4
要實現此目的,您可以使用交叉表查詢。但是,在最初的嘗試中,您為每個資料點檢索了多行,這不是所需的結果。
以下調整後的查詢將提供所需的結果:
SELECT app_id, transaction_id, mobile_no, MAX(CASE WHEN node_id = 1 THEN entered_value END) AS Q1, MAX(CASE WHEN node_id = 2 THEN entered_value END) AS Q2, MAX(CASE WHEN node_id = 3 THEN entered_value END) AS Q3, MAX(CASE WHEN node_id = 4 THEN entered_value END) AS Q4, MAX(CASE WHEN node_id = 5 THEN entered_value END) AS Q5 FROM trn_user_log GROUP BY app_id, transaction_id, mobile_no
您也表達了使用來自customer_attribute 列作為列標題。雖然 NAME_CONST 函數不適合此目的,但您可以利用可能實現所需結果的技術。但是,請進一步說明您想要的結果,以便獲得精確的解決方案。
以上是如何建立 MySQL 交叉表查詢以將資料從行轉換為列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!