在sql中连接数据

Nat*_*nen 1 sql concatenation for-xml

给出以下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')
Run Code Online (Sandbox Code Playgroud)

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

key1    value1  col
1       test1   b1.1, b1.2, b1.3
2       test2   NULL
Run Code Online (Sandbox Code Playgroud)

我知道(理论上)使用FOR XML PATH是可能的,我只是想不出来

Tar*_*ryn 5

这应该可以得到你想要的结果:

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

请参阅SQL Fiddle with Demo