Как я могу использовать chr (10) в листаге? - PullRequest
0 голосов
/ 25 сентября 2018

Мне нужно вставить 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

Как мне улучшить мой скрипт?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Попробуйте выполнить приведенный ниже запрос, используя PIVOT, и трудно получить chr (10), используя listagg.

WITH sample_data AS (SELECT 1 ID,  'aaa' value FROM dual UNION ALL
                     SELECT 1 ID,  'bbb' value FROM dual UNION ALL
                     SELECT 1 ID,  'ccc' value FROM dual UNION ALL
                     SELECT 2 ID,  'abc' value FROM dual UNION ALL
                     SELECT 3 ID,  'abe' value FROM dual )

SELECT CASE WHEN row_number() OVER (PARTITION BY DTA_ID
                                    ORDER BY CASE 
                                                  WHEN column_name = 'VALUE' THEN 1
                                             END) = 1
                 THEN DTA_ID
       END "Current ID",
       vals "Result Value"
FROM (SELECT ID DTA_ID,
               VALUE 
        FROM   sample_data)
UNPIVOT (vals FOR column_name IN ("VALUE"))
ORDER BY DTA_ID;
0 голосов
/ 25 сентября 2018

Ваш код правильный.Вам нужен инструмент, способный отображать символ новой строки:

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 <> fiddle demo

Вывод:

ID  value
1   A
    B
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...