2012-02-27 18 views
1

私は1つの列を除いてすべての点で同じ複数の行を返すクエリを書いています。私がしたいことは、これらの行を1つの行にまとめ、その1つの列をコンマで結合することです。複数行の列の値を組み合わせる?

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 

は、だから私のクエリは、現在、このような何かを返す場合は?

提案がありますか?

答えて

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; 
+0

PSこのコードを簡単に作成できると思うのであれば、あなただけではありません。 'GROUP_CONCAT()'関数がSQL Serverに追加されるように投票し、この機能が時間を節約し、kludgyと複雑な回避策を使用して単純で一般的な必要性を表現できないことを説明してください:http://connect.microsoft .com/SQLServer/feedback/details/247118/sql-needs-version-of-mysql-group-concat-function –

関連する問題