12

私はテーブルTestTableを持っています

ID Name
-------
1  A
1  B
1  C 
2  D 
2  E
3  F

SQLServer2008でクエリを記述したいのですが

ID Name
----------    
1   A,B,C
2   D,E
3   F

誰かが私がこのクエリを書くのを手伝ってください。

4

3 に答える 3

17

私の知る限り、そうするためのネイティブな方法はありません。ただし、次のように を使用しFOR XMLてこれを行うことができます。

SELECT 
  t1.Id,
  STUFF((
    SELECT ', ' + t2.name  
    FROM Table1 t2
    WHERE t2.ID = t1.ID
    FOR XML PATH (''))
  ,1,2,'') AS Names
FROM Table1 t1
GROUP BY t1.Id;

SQL フィドルのデモ

これにより、次のことが得られます。

| ID |   NAMES |
----------------
|  1 | A, B, C |
|  2 |    D, E |
|  3 |       F |
于 2012-12-28T06:19:19.093 に答える
3

これを試して ::

SELECT  a.ID, 
        SUBSTRING(d.Name,1, LEN(d.Name) - 1) Name
FROM
        (
            SELECT DISTINCT ID
            FROM testTable
        ) a
        CROSS APPLY
        (
            SELECT [Name] + ', ' 
            FROM testTable AS B 
            WHERE A.ID = B.ID 
            FOR XML PATH('')
        ) D (Name)  
于 2012-12-28T06:20:48.343 に答える
0

SQL Server 2008Pivot or Unpivotは、 @ http://msdn.microsoft.com/en-us/library/ms177410(v=sql.105).aspxを使用してこれをサポートします。

于 2012-12-28T06:05:54.993 に答える