You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求PL/SQL语句:将多行数据按指定行数拼接为字符串

解决方案

根据你的需求,分两种场景给出只读权限下可执行的SQL语句:

场景1:固定行数分组拼接(非重叠,比如每2行/5行合并为一个字符串)

这种方式会将结果按指定行数分组,每组内的ID拼接成一个字符串,组与组之间不重叠。

示例SQL(以每2行分组为例,可修改数字为5或其他指定行数)

SELECT LISTAGG(id, ',') WITHIN GROUP (ORDER BY id) AS concatenated_ids
FROM (
    SELECT 
        id,
        CEIL(ROWNUM / 2) AS group_id  -- 将2替换为你需要的合并行数,比如5
    FROM (
        -- 替换为你的原始查询语句
        SELECT 'ID1' AS id FROM DUAL UNION ALL
        SELECT 'ID2' FROM DUAL UNION ALL
        SELECT 'ID3' FROM DUAL UNION ALL
        SELECT 'ID4' FROM DUAL UNION ALL
        SELECT 'ID5' FROM DUAL UNION ALL
        SELECT 'ID6' FROM DUAL UNION ALL
        SELECT 'ID7' FROM DUAL
    ) src
) grouped
GROUP BY group_id
ORDER BY group_id;

输出结果

ID1,ID2
ID3,ID4
ID5,ID6
ID7

场景2:滑动窗口拼接(重叠,相邻N行拼接)

如果你的期望输出是相邻行连续拼接(如ID1,ID2、ID2,ID3...),可以用LEAD函数实现:

示例SQL(以相邻2行为例)

SELECT 
    CASE 
        WHEN LEAD(id) OVER (ORDER BY id) IS NOT NULL 
        THEN id || ',' || LEAD(id) OVER (ORDER BY id)
        ELSE id
    END AS concatenated_ids
FROM (
    -- 替换为你的原始查询语句
    SELECT 'ID1' AS id FROM DUAL UNION ALL
    SELECT 'ID2' FROM DUAL UNION ALL
    SELECT 'ID3' FROM DUAL UNION ALL
    SELECT 'ID4' FROM DUAL UNION ALL
    SELECT 'ID5' FROM DUAL UNION ALL
    SELECT 'ID6' FROM DUAL UNION ALL
    SELECT 'ID7' FROM DUAL
) src;

输出结果

ID1,ID2
ID2,ID3
ID3,ID4
ID4,ID5
ID5,ID6
ID6,ID7
ID7

说明

  • 两种方案都仅需只读权限,无需创建表或存储过程。
  • 替换示例中的原始查询部分为你实际的查询语句即可。

内容的提问来源于stack exchange,提问作者Pr1m0dK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:12:47