【问题标题】:How to merge more than 1 cell value with a comma in a single cell of a row如何在一行的单个单元格中将多个单元格值与逗号合并
【发布时间】:2013-05-09 06:32:39
【问题描述】:

我在 SQL Server 中有 2 个表,其中一个名称有多个位置,我需要做的就是将这些位置合并到一个单元格中。

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

请尽快帮助我。

【问题讨论】:

  • 使用循环为每个首字母查询添加位置

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


【解决方案1】:

检查此代码,您可以使用 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 德里、孟买、海得拉巴

我在德里钦奈

【讨论】:

  • @SAK HI sak 我想添加创建临时表命令它现在请检查.. 或者你有任何错误请告诉我
【解决方案2】:

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

    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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    相关资源
    最近更新 更多