2014-04-21 28 views
0

我想使用unpivot函數,但我不知道如果這是正確的方法,因爲我沒有得到所需的結果。這是我作爲一例:如何使用Unpivot使用SQL

CODE TYPE1 TYPE2 TYPE3 AMOUNT 
1  XX  YD  RE  22 
2  LY  GD  DD  45 
3  SD  DFD  WW  75 

,這裏是理想的結果我跑後,我的查詢:

CODE GRP_NM GRP_VALUES  AMT 
1   TYPE1 XX   22 
2   TYPE1 LY   45 
3   TYPE1 SD   75 
1   TYPE2 YD   22 
2   TYPE2 GD   45 
3   TYPE2 DFD   75 
1   TYPE3 RE   22 
2   TYPE3 DD   45 
3   TYPE3 WW   75 

,這裏是查詢我有,但並沒有給我的結果我需要:

SELECT CODE, AMT, GRP_NM FROM MY_TABLE 
UNPIVOT 
(
MARKS 
FOR (TYPE1, TYPE2,TYPE3) 
)U; 

回答

0

我想這是你想要的語法:

with my_table as (
     select 1 as code, 'XX' as type1, 'YD' as type2, 'RE' as type3, 22 as amount 
) 
select code, grp_num, grp_values, amount 
from MY_TABLE 
unpivot (grp_values for grp_num in (TYPE1, TYPE2, TYPE3) 
     ) U; 

個人而言,我發現unpivot語法很難記住,所以我通常使用cross joincase語句執行此操作。

+0

我有超過20000行,所以運行select語句爲每個值是真的不合理,所以我希望有一些其他的解決方案。謝謝 – moe