Как я могу объединить несколько значений для одного идентификатора в SQL? - PullRequest
0 голосов
/ 13 апреля 2020

Мой код:

SELECT
    o.ORDER_ID
    ,o.ORDER_DESCRIPTION
    ,o.ORDER_DATE
    ,o.ORDER_ITEM_ID
, i.CONCATENATED_ITEM_DESC

FROM ORDERS o

INNER JOIN (
    SELECT i.ITEM_ID,
    CASE 
        WHEN COUNT(i.ITEM_ID > 1) THEN 'CONCATENATE THE DESCRIPTIONS'
    END AS CONCATENATED_ITEM_DESC
    FROM ITEMS i

)i ON o.ORDER_ITEM_ID = i.ITEM_ID
;

This is the desired output

Я пытаюсь получить описание из объединенной таблицы.

1 Ответ

1 голос
/ 13 апреля 2020

Стандартная функция listagg():

SELECT o.*, i.CONCATENATED_ITEM_DESC
FROM ORDERS o INNER JOIN
     (SELECT i.ITEM_ID,
             LISTAGG(ITEM_DESC, ', ') WITHIN GROUP )ORDER BY ITEM_DESC) AS CONCATENATED_ITEM_DESC
      FROM ITEMS i
      GROUP BY i.ITEM_ID
     ) 
     ON o.ORDER_ITEM_ID = i.ITEM_ID;

Однако многие базы данных имеют другие имена для этой функции, включая string_agg() и group_concat().

...