如何查询SQL数据库

时间:2013-06-21 11:29:32

标签: c# database sql-server-2008

enter image description here

图01是数据库中的一个表,我想提取数据,如图02所示。

我应该使用哪种查询?

Col_1中的唯一元素应该成为新表的列名,Col_2中的元素应该成为如图02所示的值。

1 个答案:

答案 0 :(得分:5)

您可以使用PIVOT功能和row_number()来获得结果:

select A, B
from
(
  select col_1, col_2,
    row_number() over(partition by col_1 order by col_2) rn
  from yourtable
) d
pivot
(
  max(col_2)
  for col_1 in (A, B)
) piv;

请参阅SQL Fiddle with Demo

或者您可以使用带有CASe表达式的聚合函数将行转换为列:

select 
  max(case when col_1 = 'A' then col_2 end) A,
  max(case when col_1 = 'B' then col_2 end) B
from
(
  select col_1, col_2,
    row_number() over(partition by col_1 order by col_2) rn
  from yourtable
) d
group by rn;

请参阅SQL Fiddle with Demo