首页 > 解决方案 > 如何在 listagg 中使用 chr(10)?

问题描述

我需要在 listagg 中插入一个 char(10),但它没有按预期工作。

这是我写的脚本:

select ID, listagg(value , ';')within group (order by ID) as "value"
from DTA 
group by ID


Current Result
ID  |value      |
----|-----------|
1   |aaa;bbb;ccc|
2   |abc        |
3   |abe        |


Desired Result 

ID  |value          
----|------
1   |aaa            
    |bbb                
    |ccc            
----|------
2   |abc            
----|------
3   |abe

我尝试使用它,但它没有按预期工作。

select ID, listagg(value , chr(10))within group (order by ID) as "value"
from DTA 
group by ID

如何改进我的脚本?

标签: oracleoracle11g

解决方案


你的代码是正确的。您需要一个能够显示换行符的工具:

WITH DTA AS (
  SELECT 1 AS ID, 'A' AS Value FROM dual
  UNION ALL
  SELECT 1 AS ID, 'B' FROM dual
)
select ID, listagg(value , chr(10))within group (order by ID) as "value"
from DTA 
group by ID;

db<>小提琴演示

输出:

ID  value
1   A
    B

推荐阅读