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