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

具体如下:

有两个表,每个表只有一个字段,现在想生成一个新表,新表只有两条记录(也就是之前的两个表),其中一个字段是该表的所有记录(用逗号隔开)。请问以上问题能否用sql语句实现?具体怎么写?

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写法

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-17
我猜测你的表1和表2的数据量应该不大,这样的话可以把2个表的数据导出到EXCEL,然后再EXCEL中合并整理数据,最后再导回到表3中。这是最快最简单的方法了。
否则只能用SQL的存储过程了,如果需要的话,我可以提供给你。
第2个回答  2013-09-17
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追问

请问 where 1=1 是什么意思啊?

追答

因为你就是一个列 把一个列都串起来 条件1=1是永远成立
这样就可以把所有的串起来了 你写2=2也可以啊 只要条件是永恒的 就可以

本回答被提问者和网友采纳
第3个回答  2013-09-17
水电费水电费
相似回答