oracle行转列 vmsys.vm_concat

本文介绍了一种使用SQL进行故事线组合的查询方法,通过构造临时表并利用窗口函数实现不同故事阶段的有序组合,最终得到每个故事ID对应的故事线。

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



   WITH tb AS(SELECT '001' ID, '2.发展' content1, 2 seq FROM dual 
                  UNION all   SELECT '001', '1.开始', 1 FROM dual   
                  UNION all   SELECT '001', '4.结局', 4 FROM dual   
                  UNION all   SELECT '001', '3.高潮', 3 FROM dual
                  UNION ALL   SELECT '002', '4.结局', 4 FROM dual  
                  UNION all   SELECT '002', '3.高潮', 3 FROM dual  
                  UNION all   SELECT '002', '2.发展', 2 FROM dual  
                  UNION all   SELECT '002', '1.开始', 1 FROM dual
                  UNION ALL   SELECT '003', '1.开始', 1 FROM dual  
                  UNION all   SELECT '003', '2.发展', 2 FROM dual  
                  UNION all   SELECT '003', '3.高潮', 3 FROM dual  
                  UNION all   SELECT '003', '4.结局', 4 FROM dual  )  
    select id,max(content1) content1  from (select id, vm_concat(content1) over(partition by id order by seq) content1 
      from tb)  group by id;


id    content1

----   --------------------------------------------

1 001 1.开始,2.发展,3.高潮,4.结局
2 002 1.开始,2.发展,3.高潮,4.结局
3 003 1.开始,2.发展,3.高潮,4.结局

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值