string_agg去重功能

Kyle liu 1 信誉分
2025-02-09T08:58:20.59+00:00

比如有以下采购记录表: pu_order

supplier | product | date | qty


supA | pc001 | 2025-01-01 | 3

supA | pc002 | 2025-01-02 | 1

supB | pc001 | 2025-01-03 | 6

supB | pc001 | 2025-01-05 | 8

supA | pc001 | 2025-01-06 | 6

我想统计1月份,每种产品都采购过多少,供应商都有哪几家,用以下代码后,得到的供应商会出现重复请问如何去重呢?

select product, 总数量=sum(qty), 供应商=string_agg(supplier, ';')

from pu_order

where [date] between '2025-01-01' and '2025-01-31'

goup by product

SQL Server
SQL Server
Microsoft 关系数据库管理和分析系统的一个系列,用于实现电子商务、业务线和数据仓库解决方案。
204 个问题
Transact-SQL
Transact-SQL
ANSI SQL 语言的 Microsoft 扩展,包括过程编程、局部变量和各种支持函数。
29 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. LiHongMSFT-4306 30,666 信誉分
    2025-02-10T03:05:23.16+00:00

    你好,

    请尝试如下代码:

    ;WITH CTE AS
    (
    select product, 总数量=sum(qty), supplier
    from pu_order
    where [date] between '2025-01-01' and '2025-01-31'
    group by product,supplier
    )
    SELECT product, 总数量=sum(总数量), 供应商=string_agg(supplier, ';')
    FROM CTE
    GROUP BY product
    

    如果答案是正确的解决方案,请点击“接受答案”并投赞成票。 如果您对此答案有其他疑问,请点击“评论”。


0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。