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

Oracle多行列值拼接并保留原行的SQL实现求助

解决方案

可以使用分析函数版的LISTAGG直接实现需求,无需单独聚合后关联,在原表基础上即可生成每个PID对应的完整拼接文本:

SELECT 
    pid,
    LISTAGG("Desc", ' ') WITHIN GROUP (ORDER BY seq) OVER (PARTITION BY pid) AS Desc1,
    "Desc" AS Desc2
FROM A
ORDER BY pid, seq;

说明:

  • LISTAGG(...) OVER (PARTITION BY pid):将每个PID分组内的所有Desc字段按seq顺序拼接,作为每条记录的Desc1
  • 直接保留原表的Desc字段作为Desc2
  • 最后按pid和seq排序,确保结果顺序与目标输出一致

执行该语句后,输出结果与目标格式完全匹配(注:原表中A的第三条Desc为day.,目标输出中误写为day!,执行结果将以原表数据为准):

PID Desc1 Desc2
A Have a nice day. Have
A Have a nice day. a nice
A Have a nice day. day.
B Nice Work. Nice Work.
C Yes we can do this work! Yes
C Yes we can do this work! we can
C Yes we can do this work! do
C Yes we can do this work! this work!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:22:06