2012-03-05 10 views
0

を複数行のデータを組み合わせる:表は以下の形式である単一の行に

ID  Category 
1  a 
1  b 
2  a 
2  b 
2  c 

私は次の形式

ID    Category 
1     a,b 
2     a,b,c 

での出力が

+0

可能重複します。http:// stackoverflowの。 com/questions/6603319/idに基づく連結値) –

+0

[連結m任意の行を単一のテキスト文字列に変換できますか?](https://stackoverflow.com/questions/194852/concatenate-many-rows-into-a-single-text-string) –

答えて

0

たぶん、このような何か:[IDに基づいて連結した値](の

テストデータ

DECLARE @tbl TABLE(ID INT,Category VARCHAR(100)) 
INSERT INTO @tbl 
VALUES 
    (1,'a'), 
    (1,'b'), 
    (2,'a'), 
    (2,'b'), 
    (2,'c') 

クエリ

;WITH CTE  ----CTE Name 
AS 
(
    SELECT 
     ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) AS RowNbr, 
     ID, 
     Category 
    FROM 
     @tbl AS tbl 
) 
SELECT 
    CTE.ID, 
    (
     STUFF 
      ((
       SELECT 
        ','+Category 
       FROM @tbl AS tbl 
       WHERE tbl.ID=CTE.ID 
       FOR XML PATH('') 
       ) 
     ,1,1,'') 
    ) AS Category 
FROM 
    CTE 
WHERE 
    CTE.RowNbr=1 
0
効率的な方法を提案してくださいしたいです

次のクエリを試してください:

SELECT ID, 
    REPLACE(
    (SELECT Category AS [data()] 
    FROM TableA 
    WHERE b.ID=ID 
    ORDER BY Category FOR XML PATH('')), 
    ' ', ', ') 
FROM TableB b 
GROUP BY ID 
0

私は前回同様のことに直面し、手順を使用して解決しました。あなたは特定のIDのためにカテゴリでループをする必要があります。

関連する問題