【问题标题】:How can I concatenate multiple values for a single identifier in SQL?如何在 SQL 中为单个标识符连接多个值?
【发布时间】:2020-04-13 13:38:57
【问题描述】:

我的代码:

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
;

我正在尝试从连接的另一个表中获取描述。

【问题讨论】:

  • 您使用的是哪种 DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加tagWhy should I tag my DBMS

标签: sql string-aggregation


【解决方案1】:

标准函数是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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2022-12-07
    • 2014-09-26
    • 2019-05-16
    • 2016-12-03
    • 2020-04-05
    相关资源
    最近更新 更多