在SQL中将两列值显示为两行

Bri*_*tel 5 sql unpivot sql-server-2012

我正在使用SQL Server 2012作为我的数据库.现在,我有一张表格,内容如下.

ID                COLUMN1              COLUMN2
1                    A                    B
Run Code Online (Sandbox Code Playgroud)

现在我想要这样的结果.

ID                   Values
1                       A   
1                       B
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议我该怎么办?我知道我可以使用pivot或unpivot.但我不知道该怎么办?还有其他方法吗?

请帮我写出相同的查询.

提前致谢.

Tar*_*ryn 6

您可以使用 UNPIVOT 来获得最终结果:

select id, value
from yourtable
unpivot
(
  value
  for col in (COLUMN1, COLUMN2)
) u;
Run Code Online (Sandbox Code Playgroud)

参见SQL Fiddle with Demo

或者您可以使用 CROSS APPLY 来获取它:

select id, value
from yourtable
cross apply
(
  values ('COLUMN1', COLUMN1), ('COLUMN2', COLUMN2)
) c (col, value)
Run Code Online (Sandbox Code Playgroud)

参见SQL Fiddle with Demo