SQL 行轉列
1. 創建臨時表
CREATE TABLE #TmpTable
(
RYear INT, --年份
JQty INT, --一月的數據
FQty INT, --二月的數據
MQty INT, --三月的數據
AQty INT --四月的數據
)
2. 數據如下
INSERT INTO #TmpTable( RYear, JQty, FQty, MQty, AQty )
SELECT T.RYear,T.JQty,T.FQty,T.MQty,T.AQty FROM
(
SELECT 2011 RYear,1 JQty,2 FQty,3 MQty,4 AQty
UNION ALL
SELECT 2011 RYear,1 JQty,2 FQty,3 MQty,4 AQty
UNION ALL
SELECT 2010 RYear,1 JQty,2 FQty,3 MQty,4 AQty
UNION ALL
SELECT 2010 RYear,1 JQty,2 FQty,3 MQty,4 AQty
) T
3. 轉換的SQL
SELECT RYear,'Jan' RMonth,SUM(JQty) Qty FROM #TmpTable GROUP BY RYear
UNION ALL
SELECT RYear,'Feb' RMonth,SUM(FQty) Qty FROM #TmpTable GROUP BY RYear
UNION ALL
SELECT RYear,'Mar' RMonth,SUM(MQty) Qty FROM #TmpTable GROUP BY RYear
UNION ALL
SELECT RYear,'Apr' RMonth,SUM(AQty) Qty FROM #TmpTable GROUP BY RYear
4. 轉換原理
用 GROUP 統計之后,之后用 UNION 聯合起來即可

浙公網安備 33010602011771號