bro*_*man 1 sql sql-server sql-server-2008
我正在编写一个返回多行的查询,除了一列之外,它们在所有方面都是相同的.我想要做的是将这些行组合成一行,并用逗号连接那一列.
所以,如果我的查询当前返回如下内容:
Animal Name Toy
Cat Kitty Mouse
Cat Kitty CatNip
Dog Rover Bone
Dog Rover Chew Toy
Run Code Online (Sandbox Code Playgroud)
我想要它返回这个:
Animal Name Toy
Cat Kitty Mouse, CatNip
Dog Rover Bone, Chewtoy
Run Code Online (Sandbox Code Playgroud)
那有意义吗?
有什么建议?
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;
Run Code Online (Sandbox Code Playgroud)