首页 > 解决方案 > 使用 SQL Server 中的列标题将单行的列值转换为 2 列

问题描述

我需要将 Column 和一行转换为 2 列。下面是包含 4 列和单行的示例表 [Table01]。

First   Second  Third   Forth
01      02      03      04

我需要将其转置为新表 [Table01_T]

Column01     Column02
First         01
Second        02
Third         03
Forth         04

每次我们收到 4 列的单行时,我们都需要将它们转换为 2 列和 4 行。

标签: sql-server

解决方案


像这样的东西

select
  v.*
from [Table01]
 cross apply
  (values ('First', [First]),('Second',[Second]),
          ('Third',[Third]),('Forth',[Forth])) v(Column01, Column02);

使用相同的样本数据,此查询会产生相同的结果。我发现这种语法比 UNPIVOT 更具可读性。

结果

Column1 Column02
First   01
Second  02
Third   03
Forth   04

推荐阅读