2012-04-21

MS SQL-UNPOVIT-橫向資料轉縱向

之前有寫過一篇PIVOT,可以將明細資料轉為二維匯總的橫向表示方式(如Excel資料),
如果想要將橫向多欄位資料轉為縱向表示(明細),則可使用UNPIVOT

--範例
--建立暫存表格
DECLARE @Table TABLE
( ProdNo varchar(3),
 RepQty int,
 ReaQty int,
 RecQty int)

--產生測試資料 
DECLARE @i INT
SET @i = 1
WHILE @i <= 3
BEGIN
 INSERT INTO @Table values (
  REPLICATE('0',(3-LEN(CAST(@i as varchar(3)))))+CAST(@i as varchar(3)),
  @i*(@i+1),
  @i*(@i+3),
  @i*(@i+5))
 SET @i = @i + 1
END

--資料轉換
select ProdNo,QtyType,Qty
from @Table
UNPIVOT
 (
 Qty FOR QtyType IN (RepQty,ReaQty,RecQty)
 ) PV

原始資料

執行結果


參考自:~楓花雪岳~[SQL] PIVOT 和 UNPIVOTMSDN-使用 PIVOT 和 UNPIVOT

張貼留言