如何在一行的单个单元格中使用逗号合并多个单元格值

时间:2013-05-09 06:32:40

标签: sql sql-server sql-server-2008 sql-server-group-concat

我在SQL Server中有两个表,其中有一个名称的多个位置,我需要做的就是将位置分成一个单元格来表示这些名称。

Table 1
Name
H
I
J

Table 2
Name Location
H    Delhi
H    Mumbai
H    Hyderabad
I    Chennai
I    Delhi

现在申请加入后,结果应如下

Name Location
H    Delhi, Mumbai, Hyderabad
I    Chennai, Delhi

请尽快帮助我。

2 个答案:

答案 0 :(得分:2)

检查此代码,您可以使用xml路径进行连接目的

              DROP TABLE #temp;
    Create table #temp
    (
    Name varchar(10),
    Location varchar(100)
    )

    Insert into #temp
    values ('h','delhi'),
    ('h','Mumbai'),
    ('h','Hyderabad'),
    ('I','Chennai'),
    ('I','Delhi')

    select t.Name,
        STUFF((   SELECT ', ' +te.Location
            FROM #temp te
            WHERE T.Name = te.Name
            FOR XML PATH ('')
        ),1,1,'') as Location
    from #temp  t
    group by t.Name

结果集

名称位置

h德里,孟买,海德拉巴

I Chennai,Delhi

答案 1 :(得分:0)

您好我刚刚意识到您需要两个表只需对代码进行一些更改,请检查下面的代码

    Create table #temp1
    (
    Name varchar(10) 

    )

    Create table #temp2
    (
    Name varchar(10),
    Location varchar(100)
    )

    Insert into #temp1
    values ('h' ),('I' )

    Insert into #temp2
    values ('h','delhi'),
    ('h','Mumbai'),
    ('h','Hyderabad'),
    ('I','Chennai'),
    ('I','Delhi')

    Select *from #temp1
    Select *from #temp2



    select t.Name,
        STUFF((   SELECT ', ' +te.Location
            FROM #temp2 te
            WHERE T.Name = te.Name
            FOR XML PATH ('')
        ),1,1,'') as Location
    from #temp1  t
    group by t.Name 


   DROP TABLE #temp1;

 DROP TABLE #temp2;