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

按Days分组返回逗号分隔Id列表的SQL语句报错排查

按Days分组拼接Id逗号分隔列表的SQL问题修正

需求

按Days字段分组,返回每组对应的Id逗号分隔列表。

表结构

CREATE TABLE data (
  Id INT IDENTITY(1, 1),
  Days VARCHAR(255)
);

测试数据

INSERT INTO data (Id, Days)
VALUES 
(2612,'4'),
(2614,'4'),
(2617,'5'),
(2651,'6'),
(2652,'7');

原错误SQL

Select 
Ids = 
    STUFF((SELECT ',' +  CAST(b.Id AS varchar)
           FROM data b 
           WHERE b.Id = a.Id 
          FOR XML PATH('')), 1, 2, '')
from 
data a
group by Days

问题分析

执行上述SQL后无输出结果,核心问题有两个:

  • 子查询关联条件错误:用b.Id = a.Id仅能匹配当前行的单个Id,无法关联同Days分组下的所有记录
  • STUFF参数错误:逗号仅占1个字符,却指定删除2个字符,导致拼接逻辑失效

修正后的SQL

SELECT 
  Days,
  Ids = STUFF((
    SELECT ',' + CAST(b.Id AS VARCHAR)
    FROM data b 
    WHERE b.Days = a.Days  -- 关联同Days分组的所有记录
    FOR XML PATH('')
  ), 1, 1, '')  -- 删除开头的1个逗号
FROM data a
GROUP BY Days;

执行结果

Days | Ids
-----|----------------
4    | 2612,2614
5    | 2617
6    | 2651
7    | 2652

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 18:02:43