Oracle:条件分组

时间:2015-09-21 11:02:57

标签: oracle

我的数据格式如下:

 cons_Type   COLUMN_NAME
    P        (COL1)
    R        (COL6_REFERENCE)
    R        (COL6_REFERENCE)
    U        (COL5_COM_UNIQUE)
    U        (COL3_UNIQUE,COL4_COM_UNIQUE)

最后,我想list_gg column_name,cons_type明智的cons_type将在哪里 要么' P'或者' U'仅

其他cons_type如' R'不能使用LISTAGG()函数聚合列表。

并且最终预期输出必须采用以下格式。

cons_Type   COLUMN_NAME
P            (COL1)
R            (COL6_REFERENCE)
R            (COL6_REFERENCE)
U            (COL3_UNIQUE,COL4_COM_UNIQUE),(COL5_COM_UNIQUE)

1 个答案:

答案 0 :(得分:2)

尝试:

select 
    "cons_Type", 
    "COLUMN_NAME"
from tbl
where "cons_Type" not in ('P', 'U')

union all

select 
    "cons_Type", 
    LISTAGG("COLUMN_NAME" , ',') WITHIN GROUP (ORDER BY "cons_Type")
from tbl
where "cons_Type" in ('P', 'U')
group by "cons_Type"

order by "cons_Type"

演示 sqlfiddle