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 に答える