【问题标题】:How to Merge multiple records from the concatenated column如何合并连接列中的多条记录
【发布时间】:2021-11-25 12:57:31
【问题描述】:

我有多个必须连接的列。我是用一个函数做到的。接下来,我需要将多行合并为一条以逗号分隔的记录。我有一个参考编号 (Sr#)。

在下图中,您可以看到我如何将列连接到单个列。我们可以在第 4,5 和 6,7 行看到重复项。我需要帮助来了解如何将这些记录与 ref 合并到 sr#。

select Sr.sr#, a.created ||' // ' ||a.OWNERLASTNAME||' // ' ||a.OWNERFIRSTNAME||' // ' ||a.DESCRIPTION||' // ' ||a.activitystatus||' // ' ||a.ACTIVITYSUBSTATUS||' // ' ||a.closeddate as Dispatch_comments

From smaxtable

请告诉我解决方案。谢谢

【问题讨论】:

    标签: sql merge concatenation oracle-sqldeveloper etl


    【解决方案1】:

    如果我对您的理解正确,您希望将dispatch_comments 值的不同 值“连接”起来。如果是这样(假设您在 Oracle 上,当您使用 Oracle-SQLDeveloper 标签标记问题时),一种选择是

    • 获取不同的dispatch_comments 值(这意味着您只需要取一个,例如MINsr#
    • 使用listagg“连接”它们。如果结果字符串超过 4000 个字符,您将需要 xmlagg 代替

    WITH your_query AS 
      (SELECT
            sr.sr#,
            a.created
            || ' // '
            || a.ownerlastname
            || ' // '
            || a.ownerfirstname
            || ' // '
            || a.description
            || ' // '
            || a.activitystatus
            || ' // '
            || a.activitysubstatus
            || ' // '
            || a.closeddate AS dispatch_comments
        FROM smaxtable
      ), 
    temp AS 
      -- in order to get distinct DISPATCH_COMMENTS, take just one (e.g. MIN) sr#
      (SELECT MIN(sr#) sr#,
              dispatch_comments
        FROM your_query
        GROUP BY dispatch_comments
      )
    -- finally, aggregate DISPATCH_COMMENTS
    SELECT sr#,
           LISTAGG(dispatch_comments, ', ') WITHIN GROUP(ORDER BY NULL) result
    FROM temp
    GROUP BY sr#
    

    【讨论】:

    • 是的,你是对的,我需要将 dispatch_cmets 值的不同值与 sr# 连接起来。我不明白这部分 WITH your_query AS。这是什么意思。
    • 这是一个 WITH factoring 子句,也称为 CTE(公用表表达式)。我们通常在数据库中没有实际表时使用它(因为您没有提供 CREATE TABLE 和 INSERT INTO 示例数据,对吧?),以便能够显示我们为帮助您而编写的查询 作品.
    猜你喜欢
    • 2012-04-24
    • 2021-04-14
    • 2016-02-06
    • 2017-11-01
    • 2017-02-24
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多