日期:2014-05-19  浏览次数:20575 次

求一条SQL语句,如何将多行的数据整合成一行
表数据是这样的:
F_User_ID       F_Dept_Name
-----------   --------------------------------------------------
2                       信息部
2                       财务部
2                       生产技术中心
4                       信息部
5                       科技部
5                       财务部


我要整合成这样:


F_User_ID       F_Dept_Name
-----------   --------------------------------------------------
2                       信息部,财务部,生产技术中心
4                       信息部
5                       科技部,财务部


不用游标怎么解决?在线等,解决后就给分,请各路高手赐教!谢谢

------解决方案--------------------
剛有類似的,參考
http://community.csdn.net/Expert/topic/5446/5446407.xml?temp=.2094843
------解决方案--------------------
create function fn_test(@F_User_ID int)
returns varchar(50)
AS
begin
declare @s varchar(50)
set @s= ' '
select @s=@s+ ', '+F_Dept_Name from 表 where F_User_ID=@F_User_ID
set @s=stuff(@s,1,1, ' ')
return @s
end
Go

select F_User_ID,dbo.fn_test(F_User_ID) as F_Dept_Name
from 表 group by F_User_ID
------解决方案--------------------
returns varchar(50)

太小氣了,才定義50,等會截斷了就麻煩了。

在playwarcraft的基礎上修改下.


create function fn_test(@F_User_ID int)
returns varchar(5000)
AS
begin
declare @s varchar(5000)
set @s= ' '
select @s=@s+ ', '+F_Dept_Name from 表 where F_User_ID=@F_User_ID
set @s=stuff(@s,1,1, ' ')
return @s
end
Go

select F_User_ID,dbo.fn_test(F_User_ID) as F_Dept_Name
from 表 group by F_User_ID