图01是数据库中的一个表,我想提取数据,如图02所示。
我应该使用哪种查询?
Col_1中的唯一元素应该成为新表的列名,Col_2中的元素应该成为如图02所示的值。
答案 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;
或者您可以使用带有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;