Bhu*_*ban 1 sql-server sql-server-2008-r2
使用Select top 1语句我必须从没有任何唯一键的 8 列表中检索数据。现在我想将此表转换为两列:原始列名到第一列,其各自的值到第二列。
像这样的原始表:
Column1 | Column2 | Column3 | Column4
55 | 108 | 555 | 85
Run Code Online (Sandbox Code Playgroud)
和预期的结果:
ColumnName | Value
Column1 | 55
Column2 | 108
Column3 | 555
Column4 | 85
Run Code Online (Sandbox Code Playgroud)
有一个名为 T-SQL 的构造UNPIVOT就是为此而设计的。但根据我的经验,APPLY按照我下面的代码,你会更幸运:
SELECT *
FROM YourTable t
CROSS APPLY
(SELECT 'Col1', Column1
UNION ALL
SELECT 'Col2', Column2
UNION ALL
SELECT 'Col3', Column3
UNION ALL
SELECT 'Col4', Column4
) u (columnName, Value)
;
Run Code Online (Sandbox Code Playgroud)