Написание Oracle Left Join для создания денормализованного столбца с разделителями - PullRequest
0 голосов
/ 08 мая 2018

Дано:

Table_X

id        
-------
 1       
 2 
 3       
 4        

Table_Y

id_foreign   | content
-------------+-------------------
1            | A
1            | B
1            | C
1            | D
4            | E  
6            | F  
6            | G  

Обычный left join Table_Y ON Table_X.id = Table_Y.id_foreign будет производить нормализованный вывод, однако это не то, что я хочу в конце. Можно ли легко произвести следующее без постобработки вне SQL? Поле содержимого денормализовано и разделено разделителем:

id           | content
-------------+-------------------
1            | A,B,C,D
2            | 
3            | 
4            | E

1 Ответ

0 голосов
/ 08 мая 2018

Вы ищете listagg():

select x.id, listagg(y.content, ',') within group (order by y.content)
from table_x x left join
     table_y y 
     on x.id = y.id_foreign
group by x.id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...