如何在ORACLE中使用LISTTAG形成递增数字的单行数据

How to form single row data with incremented numbers using LISTTAG in ORACLE


美国广播公司
防御
GHI

预期结果在单行中,项目符号编号作为分隔符:

  1. ABC 2.DEF 3.GHI

无法在listagg内全部完成,但可以生成序号:

select your_column, row_number() over (order by your_column) as rn
from your_table

然后将其用作内联视图,并将 listagg:

中的值连接在一起
select listagg(rn || '. ' || your_column, ' ') within group (order by rn) as result
from (
  select your_column, row_number() over (order by your_column) as rn
  from your_table
)
RESULT
--------------------
1. ABC 2. DEF 3. GHI

db<>fiddle

我假设您希望它们按字母顺序排列;如果不是,您可以调整 row_number() 调用。


I tried to use rownum in listtag

那也行,有点像:

select listagg(rownum || '. ' || your_column, ' ') within group (order by rownum) as result
from your_table

...但是您似乎无法控制顺序,除非您仍然使用子查询 - db<>fiddle