MySQL中并沒有內置的PIVOT函數,但可以使用條件聚合和CASE語句來實現類似的功能。
在MySQL中,可以使用條件聚合和CASE語句將行轉換為列。下面是一個示例,說明如何使用條件聚合和CASE語句實現PIVOT功能:
假設我們有一個名為sales的表,包含以下數據:
+-------+-------+-------+-------+
| Month | Sales | Region| Product|
+-------+-------+-------+-------+
| 1 | 100 | A | X |
| 1 | 200 | B | X |
| 2 | 150 | A | Y |
| 2 | 250 | B | Y |
+-------+-------+-------+-------+
我們想要將Region列的值作為列,并將Sales列的值作為相應的值,得到以下結果:
+-------+-------+-------+
| Month | A | B |
+-------+-------+-------+
| 1 | 100 | 200 |
| 2 | 150 | 250 |
+-------+-------+-------+
使用以下查詢可以實現此目的:
SELECT
Month,
SUM(CASE WHEN Region = 'A' THEN Sales ELSE 0 END) AS A,
SUM(CASE WHEN Region = 'B' THEN Sales ELSE 0 END) AS B
FROM sales
GROUP BY Month;
這個查詢使用了條件聚合和CASE語句:
結果將根據Month進行分組,并生成新的列A和B,其中A列包含Region為’A’的Sales值,B列包含Region為’B’的Sales值。