2015-03-31 76 views
0

我在Microsoft SQL Server(table A)中設置了以下數據集,並試圖在列ID_1ID_2上進行透視。我可以在一列上旋轉,但在連續列上旋轉很困難。任何幫助將不勝感激。SQL Multiple Pivot

我有什麼(table A):

Date  ID_1 ID_2 Value 
1-Jan  1  a  77 
1-Jan  1  b  113 
1-Jan  1  c  212 
2-Jan  1  a  159 
2-Jan  1  b  85 
2-Jan  1  c  46 
3-Jan  1  a  300 
3-Jan  1  b  456 
3-Jan  1  c  100 

我需要什麼(table B):

Date 1_a 1_b 1_c 
1-Jan 77 113 212 
2-Jan 159 85 46 
3-Jan 300 456 100 
+0

選擇 日期, [1] 從TBLA一個 樞軸(MAX(a.value中),用於在a.ID_1([1]))作爲PV 其中日期在'1/1/2014'和'1/3/2014'之間 – bsheehy 2015-03-31 17:31:04

+0

我似乎無法弄清楚如何在多個層面上進行轉換 – bsheehy 2015-03-31 17:32:12

回答

2

SQL Fiddle

查詢1

DECLARE @Table TABLE ([Date] VARCHAR(10),ID_1 INT, ID_2 CHAR(1), Value INT) 
INSERT INTO @Table VALUES 
('1-Jan',  1  ,'a',  77 ), 
('1-Jan',  1  ,'b',  113), 
('1-Jan',  1  ,'c',  212), 
('2-Jan',  1  ,'a',  159), 
('2-Jan',  1  ,'b',  85), 
('2-Jan',  1  ,'c',  46), 
('3-Jan',  1  ,'a',  300), 
('3-Jan',  1  ,'b',  456), 
('3-Jan',  1  ,'c',  100) 


SELECT * 
FROM (
SELECT [Date] 
    , CAST(ID_1 AS VARCHAR(10)) + '_' + ID_2 AS Cols 
    , Value 
FROM @Table)t 
PIVOT (SUM(Value) 
     FOR Cols 
     IN([1_a],[1_b],[1_c]) 
     )p 

Results

| Date | 1_a | 1_b | 1_c | 
|-------|-----|-----|-----| 
| 1-Jan | 77 | 113 | 212 | 
| 2-Jan | 159 | 85 | 46 | 
| 3-Jan | 300 | 456 | 100 |