我需要一些帮助来获得我需要的结果。我有2个表,其公共字段为id
。我想要合并具有相同id
id | name | somevalue1
1 | dud | 12345
2 | duda | 8908
id | somevalue2
1 | 56545
2 | 545665
1 | 89875
2 | 12524
id | somevalue2 combined
1 | 56545, 89875
2 | 545665, 12524
我尝试使用Join
,但我有点迷失。我一直在尝试做一个子选择,但我能想到的唯一方法就是从子选择中引用主要查询,但是这样做不会开始。它要么。
这个查询我一直试着挂起:
select distinct a.id,(
select b.somevalue2 + ', ' as [text()] from tableB b
where b.id = a.id and b.somevalue2 is not null for xml path(''))
as [ColumnName]
from tableA a
order by a.id asc
我想我需要提一下, TableB 有超过400,000行。 TableA 只有大约1,500行。
答案 0 :(得分:3)
这有效:
SELECT A.*,
STUFF((
SELECT ', ' + CAST([somevalue2] AS VARCHAR(20))
FROM TableB B
WHERE A.id = B.id
FOR XML PATH ('')), 1, 1, '')
FROM TableA A
Here is an sqlfiddle让你尝试。