写自己在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会报错
目前只能写出这个语句了
可以写个存储过程,将某个MainID的内容按OrderID拼接成一句话,在sql中用游标调用该存储过程。
把你写的贴出来,看看哪里可以改进