T-SQL帮助多个unpivot

时间:2010-10-13 12:57:31

标签: sql

我希望有人可以帮我这个

我有这样的数据:

SERVICE ITEM1    ITEM2    ITEM3    ITEM4  
GOLD    0        0        0        0
SILVER  2      2       0        2  
BRONZE  0      4       0        26  

但是想要这样:

GOLD  SILVER    BRONZE
2  0        0
2  0        4
0  0        0
2  0        26

我认为这是一个无法解决的问题,但无法弄清楚语法

非常感谢

2 个答案:

答案 0 :(得分:2)

/*Create testing Data - You don't need this*/
SELECT * 
INTO #YourTable FROM 
(
SELECT 'GOLD' AS SERVICE, 0 AS ITEM1, 0 AS ITEM2, 0 AS ITEM3, 0 AS ITEM4 UNION ALL 
SELECT 'SILVER' AS SERVICE, 2 AS ITEM1, 2 AS ITEM2, 0 AS ITEM3, 2 AS ITEM4 UNION ALL 
SELECT 'BRONZE' AS SERVICE, 0 AS ITEM1, 4 AS ITEM2, 0 AS ITEM3, 26 AS ITEM4
) testdata


/*You just need this*/    
SELECT * 
FROM 
    /*Substitute the name of your table here*/
    (SELECT SERVICE, ITEM1, ITEM2, ITEM3, ITEM4 FROM #YourTable) BaseData
UNPIVOT
   (Vals FOR Item IN 
      (ITEM1, ITEM2, ITEM3, ITEM4)
 )AS unpvt
 PIVOT (SUM(Vals) FOR SERVICE IN ([GOLD],[SILVER],[BRONZE]) ) AS pvt;

答案 1 :(得分:-1)

熟悉PIVOT