2016-04-15 35 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