oracle排序之后如何按照不重复进行分组

比如查询出来只有一列,排序的时候不光按照这个列进行排列,所以查出来的结果会像这样A,B,C,D,E,A,C,D,A,B。现在需要将它分组为[(A,B,C,D,E),(A,C,D),(A,B)]也就是每当找到一个新的A就分组拼接,拼接结果为[A-B-C-D-E,A-C-D,A-B]这个该如何实现,最好直接能在查询语句中直接实现。就像map里的contains,一旦不包括在map里就把前面的分为一组,再拼接。

1个回答

写一个mysql的写法给你参考:

1.替换','
2.替换'-A'
3.前后拼接'[',']'

select concat('[',replace(replace('A,B,C,D,E,A,C,D,A,B', ',', '-'), '-A', ',A'),']')
qq_34181339
qq_34181339 回复Kevin.Y.K: 好吧 谢了 如果有的话最好了 没有也算了解
4 个月之前 回复
guangcaiwudong
Kevin.Y.K 回复qq_34181339: 写一个function或者存储过程吧,这个逻辑不是靠单纯的sql能解决的,sql本来就是系统瓶颈所在,尽量不要含逻辑处理,放在后台或者前端都可以处理
4 个月之前 回复
qq_34181339
qq_34181339 谢谢你的回答,我可能没描述清楚,我的核心提问是如何按照不重复进行分组,就像map里的contains,一旦不包括在map里就把前面的分为一组,再拼接
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问