我是自己写了一个函数 CREATE FUNCTION mRow ( /* Thread parameter */ @email nvarchar(500) ) returns varchar(3000) As Begin declare @answer varchar(3000) select @answer = '' --select @answer=@answer+','+[a] from data where Email =@email select @answer=@answer+','+[a] from data where Email =@email select @answer = right(@answer,len(@answer)-1) where @answer<> '' return @answer End
a b
---------
p1 001
p1 002
p2 003
p2 004
p3 005要求汇总得到
a b
--------
p1 001,002
p2 003,004
p3 005现在只能通过写临时表再逐条统计,但是上面的表名和字段名并不是固定的,也就是需要根据用户的选择进行汇总(即from后的表名和group by后的字段列表不是固定的)
而系统本身的sum聚合函数不能对字符串进行操作,能否写自定义的聚合函数实现类似对文本进行sum的功能
CREATE FUNCTION mRow
(
/*
Thread parameter
*/
@email nvarchar(500)
)
returns varchar(3000)
As
Begin
declare @answer varchar(3000)
select @answer = ''
--select @answer=@answer+','+[a] from data where Email =@email
select @answer=@answer+','+[a] from data where Email =@email
select @answer = right(@answer,len(@answer)-1) where @answer<> ''
return @answer
End
from语句后面好像是不能加变量的
如果采用动态生成sql字符串用sp_executesql执行的话如何知道其结果?