2016-01-27 77 views
0

我有一個像SQL移調/樞軸/逆透視

key | tag1 | tag2 | tag3 | tag4 
A  1  4  8  9 
B  3  7  9  4 
C  7  3  2  6 

一個表,我想查詢表,得到的結果看起來像

key | tag 
A  1 
A  4 
A  8 
A  9 
B  3 
B  7 
B  9 
B  4 
C  7 
C  3 
C  2 
C  6 

是否有SQL的任何功能或解決方案做這個?

回答

1

這是一個簡單的UNPIVOT

SELECT [key], [tag] 
FROM tblName 
UNPIVOT ([tag] FOR [vals] IN ([tag1], [tag2], [tag3], [tag4])) A 
+0

非常感謝這個作品 – SilverBackApe

1

這裏有另外兩種方式UNPIVOT你的表:

使用CROSS APPLY

SELECT 
    t.key, x.tag 
FROM tbl t 
CROSS APPLY(VALUES 
    (tag1), (tag2), (tag3), (tag4) 
) x(tag) 

使用UNION ALL

SELECT key, tag1 FROM tbl UNION ALL 
SELECT key, tag2 FROM tbl UNION ALL 
SELECT key, tag3 FROM tbl UNION ALL 
SELECT key, tag4 FROM tbl 

Dwain Camp的寫了一篇文章,顯示CROSS APPLY具有最佳性能。

+0

非常感謝,這也是有幫助的 – SilverBackApe