SQL 列轉行

 

1. 創建臨時表

CREATE TABLE #TmpTable
(
 RYear INT, --年份
 RMonth INT, --月份
 RQty INT --數據
)

 

2. 數據如下

INSERT INTO #TmpTable( RYear, RMonth, RQty)
SELECT T.RYear,T.RMonth,T.RQty FROM
(
 SELECT 2011 RYear,1 RMonth,100 RQty
 UNION ALL
 SELECT 2011 RYear,1 RMonth,100 RQty
 UNION ALL
 SELECT 2011 RYear,2 RMonth,50 RQty
 UNION ALL
 SELECT 2010 RYear,1 RMonth,150 RQty
 UNION ALL
 SELECT 2010 RYear,3 RMonth,125 RQty
 UNION ALL
 SELECT 2010 RYear,3 RMonth,125 RQty
) T

 

3. 轉換的SQL

SELECT RYear,
SUM(CASE WHEN RMonth=1 THEN RQty ELSE 0 END) JanQty,
SUM(CASE WHEN RMonth=2 THEN RQty ELSE 0 END) FebQty,
SUM(CASE WHEN RMonth=3 THEN RQty ELSE 0 END) MarQty
FROM #TmpTable
GROUP BY RYear

發佈了61 篇原創文章 · 獲贊 4 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章