metal11516580 2008-09-11 08:53
浏览 193
已采纳

请教一个sql语句,试了好久没成功

写自己在pl/sql中写过函数实现过,但是效率很低下,数据量一大,直接导致weblogic等待状态



要实现的功能是 多条数据,有个相同的主ID,有字段 a, b, c首先将abc散列数据合并成一列,再将多行数据根据ID,合并成一行

具体如下:

OrderID MainID A B C

1 1 你 好 啊

2 1 朋 友 !

3 2 我 很 好

4 2 谢 谢 。



要求最后得到两个字段:





MainID result

1 你好啊朋友!

2 我很好谢谢。


问题补充:
select mainid, substr(max(sys_connect_by_path(aa, ',')), 2) phnum

from (select a.*,

row_number() over(partition by mainid order by mainid) rn

from (select mainid, a|| ',' || b||','||c as aa

from cpd_bagcheckdtl) a)

group by mainid

start with rn = 1

connect by rn - 1 = prior rn

and mainid = prior mainid
问题补充:
如果字段中查出有 特殊符号比如:/ \等,sys_connect_by_path会报错

目前只能写出这个语句了

  • 写回答

2条回答

  • bigbone 2008-09-11 11:10
    关注

    可以写个存储过程,将某个MainID的内容按OrderID拼接成一句话,在sql中用游标调用该存储过程。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器