我有一個像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的任何功能或解決方案做這個?
我有一個像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的任何功能或解決方案做這個?
這是一個簡單的UNPIVOT
SELECT [key], [tag]
FROM tblName
UNPIVOT ([tag] FOR [vals] IN ([tag1], [tag2], [tag3], [tag4])) A
這裏有另外兩種方式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
具有最佳性能。
非常感謝,這也是有幫助的 – SilverBackApe
非常感謝這個作品 – SilverBackApe