oracle 数据横向展示

假如一张表

col1, col2, col3, 横向字段

aaa, bbb, ccc, 123

aaa, bbb, ccc, 234

ddd, eee, fff, 234

ddd, eee, fff, 634

我想查询后展示出来

aaa, bbb, ccc, 123, 234

ddd, eee, fff, 234, 634

那用以下语句,横向字段有几种就加几个max

SELECT col1, col2, col3
, MAX(CASE WHEN row_flg = 1 THEN 横向字段 END) 横向字段1
, MAX(CASE WHEN row_flg = 2 THEN 横向字段 END) 横向字段2
, MAX(CASE WHEN row_flg = 3 THEN 横向字段 END) 横向字段3
FROM(
    select
        temp.col1, temp.col2, temp.col3, t.横向字段
        ,temp.row_flg
    from (
    select t.col1, t.col2, t.col3,
    row_number() OVER(PARTITION BY t.col3 order by t.横向字段 desc) as row_flg
    from  t
    ) temp
)
GROUP BY col1, col2, col3

 

posted on 2025-08-14 11:46  炼金师  阅读(16)  评论(0)    收藏  举报

导航