在MySQL數據庫中,我們經常會遇到需要對數據進行橫表和豎表的轉換操作。例如,某張表存儲了某品牌的銷售數據,橫表形式如下:
年份 | 月份 | 品牌 | 銷售額 | | 2019 | 1 | A | 10000 | | 2019 | 1 | B | 20000 | | 2019 | 2 | A | 15000 | | 2019 | 2 | B | 25000
上述表格中,年份、月份和品牌是該表的三個維度,而銷售額是度量值,可以進行聚合操作。如需將上述表格轉換為豎表形式,則應該將品牌列轉換為行記錄:
年份 | 月份 | 品牌A銷售額 | 品牌B銷售額 | | 2019 | 1 | 10000 | 20000 | | 2019 | 2 | 15000 | 25000
上述表格中,品牌A銷售額和品牌B銷售額分別為品牌A和品牌B在各個時間維度上的銷售額。以下是如何使用MySQL語句進行橫表轉豎表的操作。
SELECT 年份, 月份, SUM(CASE WHEN 品牌 = 'A' THEN 銷售額 ELSE 0 END) AS '品牌A銷售額', SUM(CASE WHEN 品牌 = 'B' THEN 銷售額 ELSE 0 END) AS '品牌B銷售額' FROM 表名 GROUP BY 年份, 月份
以上SQL語句中,GROUP BY子句按照年份和月份進行分組。在SELECT子句中,使用CASE WHEN語句判斷品牌列的值,如果是品牌A,則將該行的銷售額值計入品牌A銷售額列,否則將其計入品牌B銷售額列。最終得到的結果即為豎表形式的銷售數據。
上一篇mysql數據模型三要素
下一篇mysql數據查詢記錄