先来看看整个sql的样子
with aa as
(select t.call_type,
t.summary_id,
t.user_id,
y.yh_mc name,
t.nactive_id,
row_number() over(partition by t.summary_id, t.nactive_id order by t.seq_id) rn
from nflow_usersummary t, t_xt_yh y
where t.nactive_id = '133000050'
and call_type = '0301'
and t.user_id = y.yh_id)
select '咨询' caseywlb, summary_id,
max(sys_connect_by_path(name, ',')) aa
--max(ltrim(sys_connect_by_path(name, ','), ',')) aa
from aa
start with rn = 1
connect by prior rn + 1 = rn
and prior summary_id = summary_id
and prior nactive_id = nactive_id
group by summary_id, nactive_id
我们把他分成几个部分依次查看查询结果。
首先是核心部分aa,其查询结果如下图所示
然后用一层sys_connect_by_path方法将其整理,其查询结果如下图所示
接着用max方法挑选出每一组中最长的那一行,作为我们需要用到的查询结果,如下
可以看出,已经把人名用“,”拼凑在了一起。要去掉最左侧的“,”只需要用ltrim方法处理一下即可。