1

给定以下 SQL 表(带数据)

create table a (key1 INT, value1 NVARCHAR(MAX))
create table b (fk INT, value2 NVARCHAR(MAX))

INSERT INTO a(key1, value1) values (1, 'test1')
INSERT INTO a(key1, value1) values (2, 'test2')

INSERT INTO b(fk, value2) values (1, 'b1.1')
INSERT INTO b(fk, value2) values (1, 'b1.2')
INSERT INTO b(fk, value2) values (1, 'b1.3')

我想返回 b 中连接在一起的外键值,如下所示:

key1    value1  col
1       test1   b1.1, b1.2, b1.3
2       test2   NULL

我知道 FOR XML PATH 有可能(理论上),我只是想不通

4

1 回答 1

5

这应该会给你你想要的结果:

select a.key1,
  a.value1,
  stuff((select distinct ', ' + value2
         from b
         where a.key1 = b.fk 
         for XML path('')),1,1,'') 
from a

请参阅带有演示的 SQL Fiddle

于 2012-10-04T15:59:37.073 回答