繁体   English   中英

如何订购以逗号分隔的列表

[英]How to order a comma-separated list

在 Oracle 中,我想重写一列数据,如下所示:

2012AName,2019BName,2017DName,2017CName

这是一个按年份 + 名称顺序按年份 desc 和名称的第一个字符 asc 拆分后的分组 ',' 结果如下

2012AName,2017CName,2017CDName,2019BName

这是否符合您的要求,

首先,我们使用listagg和您想要的order by拆分给定的字符串和聚合。

with input(str)
as
(
select'2012AName,2019BName,2017DName,2017CName' as str 
  from dual
)
select listagg(split,',') 
within group (order by substr(split,1,4),substr(split,5,1))
  from 
(
select regexp_substr(str,'[^,]+', 1, level) split
  from input 
connect by regexp_substr(str, '[^,]+', 1, level) 
 is not null
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM