2012-10-04 6 views
1

Предоставлено следующих таблиц SQL (с данными)конкатенации данных в 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') 

Я хотел бы вернуть значения внешнего ключа в б сцепляются вместе так:

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

Я знаю, что это возможно (теоретически) с FOR XML PATH, я просто не могу понять это

ответ

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

+0

Awesome. И бесконечные плюсы, если бы я мог это сделать, для указания SQL Fiddle. JSFiddle стал одним из моих любимых сайтов, но не знал, что он был для SQL. –

+0

@NateNoonen SQL Fiddle замечательный, особенно при задании вопросов, требующих DDL/DML - это простой способ обеспечить его. – Taryn

Смежные вопросы