Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将多个行值合并到Groupy的列中_Sql_Sql Server_Sql Server 2008_Sql Server 2012 - Fatal编程技术网

Sql 将多个行值合并到Groupy的列中

Sql 将多个行值合并到Groupy的列中,sql,sql-server,sql-server-2008,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2012,我的表格如下: 另一张表: Id FirstName SecondName 1 Ram N 2 Sita K 3 Bootha MU 4 Krishnan S 5 Hari M 6 Mehta A

我的表格如下:


另一张表:

Id  FirstName   SecondName
1           Ram         N         
2           Sita        K         
3           Bootha      MU        
4           Krishnan    S         
5           Hari        M         
6           Mehta       A         
7           Rahul       C         
8           Vamsi       M         
9           Badri       S   
我正在寻找如下输出:

Place    FirstName
KARNATAKA    Bootha, Hari
ANDHRA       Bootha, Krishnan
第三排也是如此

基本上,它在第二列中结合了“stuff”

我尝试下面这样的查询,但它不起作用

select ad.Place, STUFF((SELECT ', '+ FirstName FROM Associate a INNER JOIN Address Ad on a.Id = Ad.ID 
FOR XML PATH ('')) , 1, 1, '') 
From Address ad inner join Associate a
on ad.ID = a.Id
group by ad.Place

只需要稍微修改一下,请帮帮我好吗

问题是连接太多。这很棘手,因为两个表之间的连接是通过
id
进行的,但您是在不同的级别进行聚合的。因此,在子查询中确实需要一个
连接
和一个相关条件:

select ad.Place,
       STUFF((SELECT ', ' + a.FirstName
              FROM Associate a join
                   Address ad2
                   on a.Id = ad2.Id
              WHERE ad2.Place = ad.Place
              FOR XML PATH ('')
             ) , 1, 2, '') 
From Address ad
group by ad.Place;

次要的一点是,
stuff()
1,1
)的参数会在连接字符串的开头留下一个空格。

问题是连接太多。这很棘手,因为两个表之间的连接是通过
id
进行的,但您是在不同的级别进行聚合的。因此,在子查询中确实需要一个
连接
和一个相关条件:

select ad.Place,
       STUFF((SELECT ', ' + a.FirstName
              FROM Associate a join
                   Address ad2
                   on a.Id = ad2.Id
              WHERE ad2.Place = ad.Place
              FOR XML PATH ('')
             ) , 1, 2, '') 
From Address ad
group by ad.Place;

次要的一点是,
stuff()
1,1
)的参数会在连接字符串的开头留下一个空格。

问题是连接太多。这很棘手,因为两个表之间的连接是通过
id
进行的,但您是在不同的级别进行聚合的。因此,在子查询中确实需要一个
连接
和一个相关条件:

select ad.Place,
       STUFF((SELECT ', ' + a.FirstName
              FROM Associate a join
                   Address ad2
                   on a.Id = ad2.Id
              WHERE ad2.Place = ad.Place
              FOR XML PATH ('')
             ) , 1, 2, '') 
From Address ad
group by ad.Place;

次要的一点是,
stuff()
1,1
)的参数会在连接字符串的开头留下一个空格。

问题是连接太多。这很棘手,因为两个表之间的连接是通过
id
进行的,但您是在不同的级别进行聚合的。因此,在子查询中确实需要一个
连接
和一个相关条件:

select ad.Place,
       STUFF((SELECT ', ' + a.FirstName
              FROM Associate a join
                   Address ad2
                   on a.Id = ad2.Id
              WHERE ad2.Place = ad.Place
              FOR XML PATH ('')
             ) , 1, 2, '') 
From Address ad
group by ad.Place;

作为一个小点,您对
stuff()
1,1
)的参数将在连接字符串的开头留下一个空格。

谢谢Gordon,太好了,我从查询中删除了“ON”,成功了:):)我同意您对空格的看法。今天是我第一次看到这些东西:)谢谢戈登,太好了,我从你的查询中删除了“ON”,它成功了:):)我同意你关于空间的看法。今天是我第一次看到这些东西:)谢谢戈登,太好了,我从你的查询中删除了“ON”,它成功了:):)我同意你关于空间的看法。今天是我第一次看到这些东西:)谢谢戈登,太好了,我从你的查询中删除了“ON”,它成功了:):)我同意你关于空间的看法。今天是我第一次碰到东西:)