使用列名称旋转一行

时间:2014-06-01 20:42:20

标签: sql sql-server-2008 tsql

我有以下问题:我有一行数据,我想用它的名字旋转它。

Collnames:     a    b   c    d
               0   NULL 1    0

我喜欢下面的内容:

Collnames  Data
a          0
b          Null
c          1
d          0

我为此做了一个解决方案,但是它使用了带游标的动态SQL,我并不为此感到骄傲。有没有更多的方法可以解决这个问题?

THX

1 个答案:

答案 0 :(得分:4)

这是UNPIVOT,但内置运算符不会保留b,因为值为NULL,因此您可以这样做。

SELECT ColNames,Data 
FROM   YourTable 
       CROSS APPLY ( VALUES ('a', a), 
                            ('b', b), 
                            ('c', c), 
                            ('d', d)) V(ColNames, Data) 

SQL Fiddle