How to get multiple rows into one line as a string?

后端 未结 2 558
傲寒
傲寒 2020-12-13 21:47

I have two tables \"one to many\":

Table1

ID    Name
1     Abe
2     David
3     Orly

Table2

ID    email
1     a@zz         


        
相关标签:
2条回答
  • 2020-12-13 21:57
    SELECT  *
    FROM    Table1 a
    CROSS APPLY --or OUTER APPLY
    (
        SELECT SUBSTRING(
            (SELECT ','+b.Email
            FROM    Table2 b
            WHERE   a.ID = b.ID
            FOR XML PATH(''))
            ,2
            ,4000) GroupConcat
    ) x
    

    Results:

    ID Name  GroupConcat
    -- ----- -----------------------------
    1  Abe   a@zz.com,ab@zz.com,abe@zz.com
    2  David dav@zz.com,d@zz.com
    3  Orly  orly@zz.com,o@zz.com
    
    0 讨论(0)
  • 2020-12-13 22:05

    One of the neatest ways to achieve this is to combine For XML Path and STUFF as follows:

    SELECT
        ID, Name, 
        Emails = STUFF((
            SELECT ', ' + Email FROM Table2 WHERE Table2.ID = Table1.ID
            FOR XML PATH ('')),1,2,'')
    FROM Table1
    
    0 讨论(0)
提交回复
热议问题