0

我有严格的表格如下:

Ticket   Comment   UpdatedBy

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

我可以在一个行表中得到它吗(所有行的票都是一样的)

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 回答