我有一个像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