数据库中,如何用SQL语句实现将两个表联查下相同字段条件下另一字段的所有记录合成一条记录,用逗号隔开

sql2000,有3个表T1,T2,T3,T2表和T3表里的id字段都属于T1表的id字段,但是id为A2,B2,C2,D2等,在T2表中字段为A2等数值的有很多数值,T3表也一样,那么怎么联合查数据,将T1,T2,T3表全部显示在同一个表格内,T2表T3表中字段相同的数值用逗号隔开?如果数据为空,也显示出来。

如图所示:

第1个回答  2014-05-13

你这里完全就是1个表  T1   T2  T3三列   我根本没有看到有3个表

表结构都说不清楚  要大家怎么帮你呢?


DECLARE @T table(T1 varchar(4), T2 varchar(4), T3 varchar(4))
insert into @T (T1, T2, T3) values ('A2','11', '21')
insert into @T (T1, T2, T3) values ('A2','12', '22')
insert into @T (T1, T2, T3) values ('A2','13', '23')
insert into @T (T1, T2, T3) values ('A2','14', '24')
insert into @T (T1, T2, T3) values ('B2','15', '')
insert into @T (T1, T2, T3) values ('B2','16', '')
insert into @T (T1, T2, T3) values ('C2','', '')
insert into @T (T1, T2, T3) values ('C2','', '')
insert into @T (T1, T2, T3) values ('D2','', '25')
insert into @T (T1, T2, T3) values ('D2','', '26')

SELECT A.T1, LEFT(T2,LEN(T2)-1)[T2], LEFT(T3,LEN(T3)-1)[T3] FROM 
(
SELECT T1
, (SELECT T2 + ',' FROM @T WHERE T1 = A.T1 FOR XML PATH(''))[T2]
, (SELECT T3 + ',' FROM @T WHERE T1 = A.T1 FOR XML PATH(''))[T3]
FROM @T A GROUP BY T1
)A

相似回答