Попробуйте что-то вроде (* Полный пример *)
DECLARE @TableA TABLE(
A_ID INT,
A_Field VARCHAR(20)
)
INSERT INTO @TableA SELECT 1,'blah1'
INSERT INTO @TableA SELECT 2,'blah2'
INSERT INTO @TableA SELECT 3,'blah3'
DECLARE @TableB TABLE(
A_ID INT,
B_Field VARCHAR(20)
)
INSERT INTO @TableB SELECT 1,'a'
INSERT INTO @TableB SELECT 1,'b'
INSERT INTO @TableB SELECT 1,'c'
INSERT INTO @TableB SELECT 2,'a'
INSERT INTO @TableB SELECT 2,'b'
INSERT INTO @TableB SELECT 2,'c'
;WITH Vals AS (
SELECT a.A_ID,
a.A_Field,
b.B_Field
FROM @TableA a INNER JOIN
@TableB b ON a.A_ID = b.A_ID
)
SELECT p1.A_ID,
p1.A_Field
,STUFF(
(SELECT
', ' + p2.B_Field
FROM Vals p2
WHERE p2.A_ID=p1.A_ID
ORDER BY p2.A_ID
FOR XML PATH(''), TYPE
).value('.','varchar(max)')
,1,2, ''
) AS B_Field
FROM Vals p1
GROUP BY p1.A_ID,
p1.A_Field
Выход
A_ID A_Field B_Field
1 blah1 a, b, c
2 blah2 a, b, c