我在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
请尽快帮助我。
答案 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;