0

次のような制限のあるテーブルがあります。

Ticket   Comment   UpdatedBy

100      Text 1     23
100      Text 2     24
100      Text 3     25
100      Text 4     26

これを 1 つの行テーブルで取得できますか(チケットはすべての行で同じになります)

Ticket   Comment

100      23 Said Text 1 - 24 Said Text 2 -  25 Said Text 3 - 26 Said Text 4

いくつかの SQL クエリによって ?(Sql Server 2008)

4

2 に答える 2

2

使用できますFOR XML PATH

SELECT Ticket, 
  STUFF((SELECT distinct ' - ' + cast(UpdatedBy as varchar(20)) + ' ' + comment
              from yourtable t2
              where t1.Ticket = t2.Ticket
            FOR XML PATH(''), TYPE

            ).value('.', 'NVARCHAR(MAX)') 
        ,1,2,'') comments
from yourtable t1
group by ticket

デモで SQL Fiddle を参照してください

結果:

| TICKET |                                       COMMENTS |
-----------------------------------------------------------
|    100 |  23 Text 1 - 24 Text 2 - 25 Text 3 - 26 Text 4 |
于 2012-11-20T10:30:23.877 に答える
0

あなたはこれを行うことができます:

SELECT ticketno
     ,  STUFF((SELECT ' - ' + CAST(updateby AS VARCHAR) + ' said ' + comment  
         FROM tickets 
         WHERE (ticketno = t.ticketno) 
         FOR XML PATH ('')
      ),1,3,'') AS Comments
FROM tickets t
GROUP BY ticketno

フィドルの例

于 2012-11-20T10:47:35.560 に答える