2010-10-13 2 views
2

я надеялся кто-то может помочь мне с этимT-SQL помощь с несколькими UNPIVOT

У меня есть данные, как это:

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 

I думаю, что это неважно, но не могу определить синтаксис

большое спасибо

+0

я думаю SILVER должен прийти первым, то GOLD.Not наоборот! –

+0

Извините, я не понимаю – lee

+0

SRT ссылается на выходную таблицу и порядок столбца –

ответ

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; 
+0

благодарит Мартина, но значения (т. Е. Бронза 0,4,0,26) являются переменными. Это вид представления, поэтому значения будут меняться. – lee

+0

Вы имеете в виду, что столбцы 'GOLD',' SILVER', 'BRONZE' не фиксированы? Если это так, вам понадобится динамический SQL. –

+0

извините, да, столбцы фиксированы, но цифры изменят значение – lee

-1

Разберитесь с PIVOT

+0

Спасибо, я знаком, но я верю, что это незавершённый вопрос, который мне нужен – lee

+0

Проблема, с которой я столкнулся, заключается в том, что вы получаете отдельную колонку для золота, серебра и , бронза. Я думаю, что это требует нескольких невольных, но не может понять синтаксис. – lee

+0

Если я найду какое-то время, я постараюсь помочь. –