【问题标题】:Convert distinct records under one column into one singular row?将一列下的不同记录转换为单行?
【发布时间】:2021-06-18 04:00:05
【问题描述】:

我有一个表,除了一列中的值之外,所有记录都是相同的。 像这样的:

City Warehouse OrderID CustomerID
San Diego SD1 1234 5678
San Diego SD2 1234 5678
San Diego SD3 1234 5678

我可以使用什么 SQL 语法/逻辑来返回一条单数记录,其中 Warehouse 列中的唯一值组合成一行?

预期输出:

City Warehouse OrderID CustomerID
San Diego SD1, SD2, SD3 1234 5678

【问题讨论】:

    标签: sql postgresql string-aggregation


    【解决方案1】:

    您可以使用string_agg 聚合函数。如果加载此值的代码将解码回字符串数组,那么您可以使用 jsonb_agg 聚合函数,该函数将聚合到 JSON 数组中。

    https://www.postgresql.org/docs/13/functions-aggregate.html

    【讨论】:

      【解决方案2】:

      您可以使用以下查询。按City 对记录进行分组,然后使用STRING_AGG 函数。

      SELECT City, STRING_AGG(Warehouse, ',') AS Warehouse, OrderID, CustomerID
      FROM yourTable
      GROUP BY City,OrderID,CustomerID
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-10
        • 1970-01-01
        • 2013-05-20
        相关资源
        最近更新 更多