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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章