在sql中连接数据

时间:2012-10-04 15:54:16

标签: 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')

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

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

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

1 个答案:

答案 0 :(得分: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 with Demo