объединяет одно-много значений в одну строку, разделенную запятыми в sql соединении - PullRequest
0 голосов
/ 30 марта 2020

У меня есть соединение, которое разделяет отношение один ко многим к одной таблице. Я бы вместо того, чтобы вернуть это значение:

125|PROGRAM1|OEM2|1
125|PROGRAM1|OEM2|2
125|PROGRAM1|OEM2|3

Я хочу вернуть одну строку, как это:

125|PROGRAM1|OEM2|1,2,3

Вот sql я бегу сейчас:

select d.layout_id,d.pgm_nm,d.corp_nm  from io_layout_output d
    join  (select f.program_nm, c.corp_nm from file_config f
    join corp_config c
    on f.output_id = c.output_id
      where f.output_id = 112) b
    on d.pgm_nm = b.program_nm and d.corp_nm = b.corp_nm 

Как бы я получил правильный вывод?

1 Ответ

2 голосов
/ 30 марта 2020

Вам нужно использовать функцию для этого. См. LISTAGG

select d.layout_id,
       d.pgm_nm,
       LISTAGG(d.corp_nm, ', ') as corp_nm
  from io_layout_output d
    join  (select f.program_nm, 
                  c.corp_nm 
             from file_config f
                    join corp_config c
                          on f.output_id = c.output_id
            where f.output_id = 112) b
       on d.pgm_nm = b.program_nm 
       and d.corp_nm = b.corp_nm
group by d.layout_id,
         d.pgm_nm

РЕДАКТИРОВАНИЕ:

В прошлый раз, когда я использовал Oracle, вы могли использовать LISTAGG, используя group by. Я просто посмотрел на документы, и это больше не упоминается. Вот способ, если выше не работает:

select d.layout_id,
       d.pgm_nm,
       LISTAGG(d.corp_nm, ', ') 
           WITHIN GROUP (ORDER BY d.layout_id, d.pgm_nm) as corp_nm 
  from io_layout_output d
    join  (select f.program_nm, 
                  c.corp_nm 
             from file_config f
                    join corp_config c
                          on f.output_id = c.output_id
            where f.output_id = 112) b
       on d.pgm_nm = b.program_nm 
       and d.corp_nm = b.corp_nm

Примечание: я просто показываю, как использовать функцию. Не смотрел на ваш запрос вообще. Добавление этой заметки, потому что ваши данные результатов не соответствуют количеству столбцов на вашем SQL

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