有这样一个表
create table b
(
id int,
deptno varchar(10)
)
insert into b values(1,'A')
insert into b values(2,'A')
insert into b values(3,'A')
insert into b values(4,'B')
为了呈现这样的查询结果
deptno ids
A 1,2,3
B 4
所以有了这段sql
SELECT b1.deptno, STUFF((SELECT ', ' + CAST(b2.id AS VARCHAR(10))
FROM b AS b2
WHERE b1.deptno = b2.deptno
FOR XML PATH('')), 1, 2, '') AS ids
FROM b AS b1
GROUP BY b1.deptno;
其中让我不明白的是 WHERE b1.deptno = b2.deptno 在其中的作用是什么
具体实现方法是:
SELECT ', ' + CAST(b2.id AS VARCHAR(10))
FROM b AS b2
--WHERE b1.deptno = b2.deptno -- 如果没有这个条件限定,你单独运行下看看结果呢?他这里是要求与分组的依据值相同
FOR XML PATH('')