我正在编写一个返回多行的查询,除了一列之外,这些行在所有方面都是相同的。我想要做的是将这些行组合成一行,并用逗号连接那一列。
因此,如果我的查询当前返回如下内容:
Animal Name Toy
Cat Kitty Mouse
Cat Kitty CatNip
Dog Rover Bone
Dog Rover Chew Toy
我想让它改为:
Animal Name Toy
Cat Kitty Mouse, CatNip
Dog Rover Bone, Chewtoy
这有意义吗?
有什么建议吗?
答案 0 :(得分:6)
DECLARE @a TABLE
(
Animal VARCHAR(32),
Name VARCHAR(32),
Toy VARCHAR(32)
);
INSERT @a SELECT 'Cat','Kitty','Mouse';
INSERT @a SELECT 'Cat','Kitty','CatNip';
INSERT @a SELECT 'Dog','Rover','Bone';
INSERT @a SELECT 'Dog','Rover','Chew Toy';
SELECT DISTINCT Animal, Name, Toy = STUFF((SELECT ', ' + Toy
FROM @a AS a2
WHERE a2.Animal = a.Animal AND a2.Name = a.Name
FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'),
1,2,'')
FROM @a AS a;