2016-01-27 43 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