sys_connect_by_path方法的简单使用

本文深入解析了一个复杂的SQL查询过程,包括使用with语句、sys_connect_by_path和max函数的技巧,展示了如何通过SQL处理和整理数据,以实现特定的数据拼接需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先来看看整个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方法处理一下即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值