如果id相同,则SQL查询将两行合并为一行

时间:2016-04-15 13:23:40

标签: sql sql-server

我有一个名为TICKET_LAB的表     我有一个名为TICKET_LAB的表 如图所示     如图所示 TICKET_LAB table

enter image description here

和表名为test     和表名为test 如图所示     如图所示 Test table:

enter image description here

我需要一个SQL查询来获得结果:

我需要一个SQL查询来获得结果:

TLAB_TICKETID | TEST_NAME
------------- | -------------
    29        | blood, stool,...etc

任何想法

2 个答案:

答案 0 :(得分:1)

SELECT tckt.TLAB_TICKETID, STUFF(
     (SELECT ',' + TEST_NAME 
      FROM [hos].[dbo].[test]
      WHERE tckt.TLAB_TESTID = Test_ID
      FOR XML PATH (''))
     , 1, 1, '')
FROM [hos].[dbo].[test] tst
    JOIN [hos].[dbo].[Ticket_Lab] tckt
    on tst.Test_ID = tckt.TLAB_TESTID
GROUP BY tckt.TLAB_TICKETID

我认为这应该有效。

答案 1 :(得分:1)

在SQL Server中,它可能如下所示:

CREATE TABLE #TICKET_LAB(Id int)
INSERT INTO #TICKET_LAB VALUES(1), (2)

CREATE TABLE #TEST(TicketId int, Name nvarchar(100))
INSERT INTO #TEST VALUES(1, 'blood'), (1, 'etc.'), (2, 'test')

SELECT Id, STUFF((
        SELECT ', ' + t.Name FROM #TEST t WHERE tl.Id = t.TicketId FOR XML PATH('')), 1, 2, ''
    )
FROM #TICKET_LAB tl