sql - 使用列名称旋转一行

标签 sql sql-server-2008 t-sql

我遇到以下问题:我有一行数据,我想使用列名称来旋转它。

Collnames:     a    b   c    d
               0   NULL 1    0

我希望有以下内容:

Collnames  Data
a          0
b          Null
c          1
d          0

我为此提出了一个解决方案,但它使用带有游标的动态 SQL,我对此并不感到自豪。有没有更优雅的方法来解决这个问题?

谢谢

最佳答案

这是一个UNPIVOT,尽管内置运算符不会保留b,因为值为NULL,因此您可以这样做.

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

SQL Fiddle

关于sql - 使用列名称旋转一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23984273/

相关文章:

sql - 查找列中的重复条目

java - 使用 JAVA 查询 SQL - 没有任何反应

sql - 如何在我的列上创建唯一约束 (SQL Server 2008 R2)?

sql-server - 将表格从行转换为列

sql - CTE 可以提高性能吗?

SQL 插入列名作为数据

SQL Server 2008-获取表约束

sql - 如何获取SQL Server表中具有最大值的所有记录

sql - 我需要在 T-SQL 数据透视查询中更改哪些内容才能实现此特定输出?

sql - 在 SQL 中获取该月的最后一天