热门关键词好会计 好业财 T+ 易代账 好生意 用友U8 用友BIP

    详细信息

    您现在的位置:网站首页 >> 百科问答 >> 详细信息

    Oracle 将逗号分隔的列转行 和 将行转成 逗号分隔的列

    特价活动:>>>> 畅云管家新购、续费8折优惠,畅捷通T+cloud、好会计、易代账、好业财、好生意云产品8折优惠 

    将逗号分隔的列转行

    第一种方法:

    需求:按ID,把PARTICIPATORS字段里的内容按‘,’ 分开,转成行

    select id,PARTICIPATORS from
    (with test as (select id ,PARTICIPATORS  from NSC_OA_RW  where PARTICIPATORS is not null )
    select id,substr(t.cPARTICIPATORS,instr(t.cPARTICIPATORS, ',', 1, c.lv) + 1,
    instr(t.cPARTICIPATORS, ',', 1, c.lv + 1) - (instr(t.cPARTICIPATORS, ',', 1, c.lv) + 1)) AS PARTICIPATORS
    from
    (select id,',' || PARTICIPATORS || ',' AS cPARTICIPATORS,length(PARTICIPATORS || ',') - nvl(length(REPLACE(PARTICIPATORS, ',')), 0) AS cnt FROM test) t,
    (select LEVEL lv from dual CONNECT BY LEVEL <= 100) c where c.lv <= t.cnt )


    第二种:listagg


    将行转成分组汇总成逗号分隔的列


    第一种方法:使用listagg 函数


    SELECT formmain_id, '火车' as lx,field0193 as ccsqdh, field0157 as ccrid, LISTAGG(field0200, ',') WITHIN 
    GROUP (ORDER BY field0200) AS batch  , sum(nvl(field0174,0)) 
    as je, round(sum(nvl(field0174,0)/1.09),2) as notaxje from formson_52602022327 
    where nvl(field0174,0) <>0 and field0193='CCSQ-202309-093' 
    --and field0200='easypay_708094_20230201'  group by formmain_id,field0193, field0157


    但是会有一个问题 LISTAGG 的结果会有重复值

    第二种方法:使用wm_concat(distinct 字段)


    SELECT formmain_id, '火车' as lx,field0193 as ccsqdh, field0157 as ccrid, wm_concat(distinct field0200)
    AS batch  , sum(nvl(field0174,0)) as je, round(sum(nvl(field0174,0)/1.09),2) 
    as notaxje from formson_52602022327 
    where nvl(field0174,0) <>0 and field0193='CCSQ-202301-032' --and field0200='easypay_708094_20230201'  
    group by formmain_id,field0193, field0157
     
     


    这两种办法 都有一个共同的问题这两函数返回的值的字段没有对应的类型,是一段文本。所以在使用该字段关联的时候会报错 ora-00932:数据类型不-致: 应为-.但却获得clob。

    解决办法就是 to_char (wm_concat(distinct 字段) )      、  to_char (LISTAGG(field0200, ',') WITHIN GROUP (ORDER BY field0200))


     

     

    上一篇:SQL SERVER 查询存储过程执行时间

    客服电话:400-665-0028

    关键字:用友财务软件,畅捷通软件,财务软件,进销存软件,U9官网,用友U8,用友T1,用友T+,用友T3,用友T6,畅捷通好会计,好生意,智+好业财,用友培训服务售后公司,畅捷通运营培训服务公司

    版权所有:用友畅捷通软件 Copyright © 2026 All rights reserved.

    鲁ICP备2020041017号-6