SQL实现create function fmerg(@id int) returns varchar(8000) as begin declare @str varchar(8000) set @str='' select @str=@str+','+ Dep from TableName where UserName=@id set @str=right(@str,len(@str)-1) return(@str) End go--调用自定义函数得到结果 select distinct UserName,dbo.fmerg(UserName) from TableName
如果你的是MSSQL数据库,可以这样实现 --建表 Create table Test( 姓名 nvarchar(20) ,部门 Nvarchar(20) ) --插入数据 Insert into Test select '张三','A' union all select '张三','B' union all select '李四','A'--创建函数 Create Function f_Test(@thisName Nvarchar(20)) returns Nvarchar(4000) as Begin Declare @returnKey Nvarchar(4000) set @returnKey = '' select @returnKey = @returnKey +','+部门 from Test where 姓名 = @thisName set @returnKey = stuff(@returnKey,1,1,'') return @returnKey End --测试 select 姓名,部门=dbo.f_Test(姓名) from Test group by 姓名
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+ Dep from TableName where UserName=@id
set @str=right(@str,len(@str)-1)
return(@str)
End
go--调用自定义函数得到结果
select distinct UserName,dbo.fmerg(UserName) from TableName
--建表
Create table Test(
姓名 nvarchar(20)
,部门 Nvarchar(20)
)
--插入数据
Insert into Test select '张三','A'
union all select '张三','B'
union all select '李四','A'--创建函数
Create Function f_Test(@thisName Nvarchar(20))
returns Nvarchar(4000)
as
Begin
Declare @returnKey Nvarchar(4000)
set @returnKey = ''
select @returnKey = @returnKey +','+部门
from Test
where 姓名 = @thisName set @returnKey = stuff(@returnKey,1,1,'')
return @returnKey
End
--测试
select 姓名,部门=dbo.f_Test(姓名)
from Test
group by 姓名
1)用Hashtable 从DataTable中取出所有不姓名(取出后不重复)
2)遍历Hashtable,分别取出相应姓名下的记录集,
3)再将对应记录集的部门累加
我用的是SQL SERVER
你用我的例子测测看,我已经测试通过
能把你的代码给我参考一下么?