oracle 列合并行,Oracle SQL 将同一列多行合并到一列中,行列合并

箱号

1

2

3

4

5

合并成     ,1,2,3,4,5

create or replace function get_carton_list ( p_pkt_ctrl_nbr in carton_hdr.pkt_ctrl_nbr%type, p_sku_id in carton_hdr.sku_id%type, p_carton_creation_code in carton_hdr.carton_creation_code%type ) return varchar as v_carton_list varchar2(2000); begin select text into v_carton_list from ( select row_number()over(partition by groupname order by groupname,lvl desc) rn,groupname,text from ( select a.groupname,level lvl,SYS_CONNECT_BY_PATH(a.carton_nbr_x_of_y,',') text from (   select a.pkt_ctrl_nbr||'-'||a.sku_id||'-'||a.carton_creation_code groupname,   a.carton_nbr_x_of_y,row_number() over(partition by a.pkt_ctrl_nbr||'-'||a.sku_id||'-'||a.carton_creation_code order by a.carton_nbr_x_of_y) x   from (select distinct a.pkt_ctrl_nbr,b.sku_id,case when a.carton_creation_code in (5,26) then '拼箱' else '整箱' end carton_creation_code,a.carton_nbr_x_of_y from carton_hdr a inner join carton_dtl b on a.carton_nbr=b.carton_nbr   where 1=1 and a.stat_code='90' and a.pkt_ctrl_nbr=p_pkt_ctrl_nbr and b.sku_id=p_sku_id    and (case when a.carton_creation_code in (5,26) then '拼箱' else '整箱' end)=(case when p_carton_creation_code in (5,26) then '拼箱' else '整箱' end)   ) a ) a connect by a.groupname=prior a.groupname and x-1=prior x ) t ) t where rn=1; return v_carton_list; exception   when others then     return null; end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值