首页  编辑  

类似group_concat的拼接字段的方法

Tags: /超级猛料/Database.数据库相关/Oracle/   Date Created:
MySQL有group_concat的方法,可以直接拼接字段返回,Oracle中有对应的方法:LISTAGG。但是这个函数有个缺点,就是无法支持长文本数据。
如果需要支持大文本的拼接返回,可以用下面的方法:

-- 查询表中,按指定字段分组记录数最多的数据,然后拼接其name返回,返回格式为引号括起来的字段数据并以英文逗号拼接,例如 'aaa','bbb','ccc'。
SELECT XMLCAST(
            XMLAGG(
                XMLELEMENT(e, '''' || f_name || ''''','ORDER BY f_name
            ).Extract('//text()'AS clob
        ) AS name_list
FROM (

    SELECT f_group, f_name, count(*AS total
    FROM t_table a, t_child b
    WHERE a.uuid = b.uuid 
    GROUP BY f_group, f_name
    ORDER BY total DESC
    OFFSET 0 ROWS FETCH NEXT 1000 ROWS ONLY
    
)