Sélectionner un champ dans le tableau A où sous-sélectionner dans le tableau B = champ de la table A

J'ai besoin d'un peu d'aide pour get les résultats dont j'ai besoin. J'ai 2 tables avec un champ commun d' id . Je veux combiner les valeurs de la table B qui ont le même id

Tableau A

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

Tableau B

 id | somevalue2 1 | 56545 2 | 545665 1 | 89875 2 | 12524 

Résultat désiré

 id | somevalue2 combined 1 | 56545, 89875 2 | 545665, 12524 

J'ai essayé d'utiliser une Join , mais je suis un peu perdu. J'ai essayé de faire une sous-sélection, mais la seule façon de le faire fonctionner est de faire reference à la requête principale à partir de la sous-sélection, mais cela ne l'est pas non plus.

Cette requête que j'ai essayée se bloque:

 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 

MODIFIER

Je pense que je dois mentionner que TableB a plus de 400 000 lignes. TableA a seulement environ 1500 lignes.

Cela marche:

 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 

Voici un sqlfiddle pour vous d'essayer.