数据库中,如何用SQL语句实现将某字段下的所有记录合成一条记录,用逗号隔开

2025-03-22 16:40:23
推荐回答(4个)
回答1:

MS Sqlserver(for xml path的巧用):

select 'T1' M, stuff((select ',' + CAST(T1 as varchar) from Table_1 for xml path('')),1,1,'') N
union
select 'T2' M, stuff((select ',' + CAST(T2 as varchar) from Table_2 for xml path('')),1,1,'') N

Oracle(自带这样的函数):

select wm_concat(T1) N from Table_1;--10g写法
select listagg(T1,',') within group (order by T1) N from Table_1;--11g写法

回答2:

我猜测你的表1和表2的数据量应该不大,这样的话可以把2个表的数据导出到EXCEL,然后再EXCEL中合并整理数据,最后再导回到表3中。这是最快最简单的方法了。
否则只能用SQL的存储过程了,如果需要的话,我可以提供给你。

回答3:

select distinct ‘T1’ M, stuff((select ','+cast(b.t1 as varchar) from TABLE_1 b where 1=1 for xml path('')),1,1,'') N
from TABLE_1 a
union all
select distinct ‘T2’ M, stuff((select ','+cast(b.t2 as varchar) from TABLE_2 b where 1=1 for xml path('')),1,1,'') N
from TABLE_2 a

回答4:

水电费水电费