-1

在此处输入图像描述

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

我应该使用哪个查询?

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

4

1 回答 1

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

于 2013-06-21T11:32:53.050 回答