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

时间:2013-10-10 08:42:55

标签: sql sql-server-2012 unpivot

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

ID                COLUMN1              COLUMN2
1                    A                    B

现在我想要这样的结果。

ID                   Values
1                       A   
1                       B

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

请帮我写相同的查询。

提前致谢。

2 个答案:

答案 0 :(得分:4)

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

select id, value
from yourtable
unpivot
(
  value
  for col in (COLUMN1, COLUMN2)
) u;

请参阅SQL Fiddle with Demo

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

select id, value
from yourtable
cross apply
(
  values ('COLUMN1', COLUMN1), ('COLUMN2', COLUMN2)
) c (col, value)

请参阅SQL Fiddle with Demo

答案 1 :(得分:3)

select id, col1 as value
from your_table
union all
select id, col2 as value
from your_table