从表A中选择字段,其中表B中的子选择=表A字段

时间:2013-11-15 16:36:16

标签: sql-server

我需要一些帮助来获得我需要的结果。我有2个表,其公共字段为id。我想要合并具有相同id

表B 中的值

表A

id | name | somevalue1
1  | dud  | 12345
2  | duda | 8908

表B

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行。

1 个答案:

答案 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让你尝试。