You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL按Licence分组拼接Item为逗号分隔列表的问题求助

修正SQL分组拼接Item字段的问题

问题分析

原查询的核心错误有两个:

  • 子查询未按Licence过滤,导致每次拼接所有Item值,而非当前分组的内容
  • 不必要的自连接引入冗余逻辑,DISTINCT只是临时去重,未解决根本分组问题

修正后的查询语句

SELECT
    [Order],
    Customer,
    Contract,
    Licence,
    CSSNT,
    '[' + STRING_AGG(ISNULL(Item, ' '), ',') + ']' AS Item
FROM #WorkingTable2
GROUP BY [Order], Customer, Contract, Licence, CSSNT

语句说明

  1. 分组逻辑:按Order、Customer、Contract、Licence、CSSNT分组,从源数据来看,同一Licence对应的这些字段值完全一致,分组后会自动聚合为一行
  2. 拼接处理:使用STRING_AGG函数直接对分组内的Item进行逗号分隔拼接,前后添加方括号完成格式要求
  3. 空值处理:保留原逻辑中的ISNULL(Item, ' '),避免空Item导致拼接异常

如果需要固定Item的拼接顺序,可在STRING_AGG中添加排序规则:

SELECT
    [Order],
    Customer,
    Contract,
    Licence,
    CSSNT,
    '[' + STRING_AGG(ISNULL(Item, ' '), ',') WITHIN GROUP (ORDER BY Item) + ']' AS Item
FROM #WorkingTable2
GROUP BY [Order], Customer, Contract, Licence, CSSNT

验证结果

执行上述语句后,将得到与期望完全一致的结果:

OrderCustomerContractLicenceItemCSSNT
5762527370703US420D3[8.10,8.9]ABC02
12341111123US1234[9.10]ABC01

内容的提问来源于stack exchange,提问作者Michael Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 13:45:22