TBL_PARENT (parentID, ParentName) と TBL_CHILDREN (ParentID,Child_Name) の 2 つのテーブルがあります。親は 0 から多くの子を持つことができます
私が欲しいのは、親ごとに1行で親とその子のリストを提供するクエリです。
例えば
Parent1 John,Mary
Parent2 jane,steve,jana
そして、親の総数となる行数
TBL_PARENT (parentID, ParentName) と TBL_CHILDREN (ParentID,Child_Name) の 2 つのテーブルがあります。親は 0 から多くの子を持つことができます
私が欲しいのは、親ごとに1行で親とその子のリストを提供するクエリです。
例えば
Parent1 John,Mary
Parent2 jane,steve,jana
そして、親の総数となる行数
このクエリを試してください: 3 つのテーブルを作成しました。そのうち 2 つはデータベース #parant、#ch に既に作成されており、3 番目のテーブルは結果を格納する一時テーブルです。
create table #parant (id int , name varchar(10))
create table #ch (id int , name varchar(10), pid int)
insert into #parant select 1,'PA'
insert into #parant select 2,'PB'
insert into #parant select 3,'PC'
insert into #ch select 1,'Ca',1
insert into #ch select 1,'Cb',1
insert into #ch select 1,'Cc',1
insert into #ch select 1,'Cd',3
insert into #ch select 1,'Cf',3
insert into #ch select 1,'Ch',1
create table #testTable (id int, name varchar(10),chid int, chname varchar(10), cpid int)
insert into #testTable
select x.id , x.name ,isnull( y.id ,0), isnull(y.name,'') ,isnull(y.pid ,0)
from #parant as x
left outer join #ch as y
on x .id = y .pid
SELECT t.ID, t.name , STUFF(
(SELECT ',' + s.chname
FROM #TestTable s
WHERE s.ID = t.ID
FOR XML PATH('')),1,1,'') AS CSV
FROM #TestTable AS t
GROUP BY t.ID, t.name
GO
drop table #testTable
drop table #ch
drop table #parant
上記のデータについて、次の結果が得られました
1 PA Ca,Cb,Cc,Ch 2 PB
3 PC Cd,Cf