2016-04-15 62 views
1

我已经我已经为如图 TICKET_LAB table用于合并两行到一行的SQL查询,如果ID是一样

enter image description here

和表命名的测试 并显示 表命名TICKET_LAB 表命名TICKET_LAB 如图所示 表命名测试 Test table:

enter image description here

我需要一个SQL查询,得到的结果类似:

我需要一个SQL查询,得到的结果类似:

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

任何想法

+2

请复制表结构,而不是在图像 –

+1

SQL服务器或MySQL incapsulate呢? – mitkosoft

回答

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 

我认为这应该工作。

+2

我相信这个人正在寻找'GROUP_CONCAT'解决方案 – mitkosoft

+0

感谢您的帮助,但是作为@mitkosoft说我需要它通过TLAB_TICKETID –

+0

分组更新为使用group_concat。 – CathalMF

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