如何在SQL(ORACLE)中根据查询结果创建动态行?

ogsagwnx  于 2023-03-22  发布在  Oracle
关注(0)|答案(1)|浏览(213)

| 颜色|变体|
| - ------|- ------|
| 红色|勃艮第|
| 红色|克里姆森|
| 绿色|橄榄色|
| 绿色|翡翠|
如何查询上表:
| 红色|绿色|
| - ------|- ------|
| 勃艮第|橄榄色|
| 克里姆森|翡翠|
到目前为止,我已经研究了枢轴,但我发现的大多数例子都与平均值和计数有关。你能告诉我我应该研究的任何资源吗?谢谢!

blpfk2vs

blpfk2vs1#

假设你有一个列可以用来对记录进行排序,比如id,你可以使用窗口函数来枚举每种颜色的行,然后使用条件聚合进行旋转:

select
    max(case when color = 'RED'  then variant end) red,
    max(case when color = 'BLUE' then variant end) blue
from (
    select t.*,
        row_number() over(partition by color order by id) rn
    from mytable t
) t
group by rn

相关问题