关于自定义函数年的问题!

消失风雨中 2006-09-14 12:42:53
自定义函数可不可以写在集合函数?象MAX,MIN那样的??我想写一个字付型的汇总函数,传入列名和分隔符后返回一个字付串的!

表A
字段1,字段2
aa uiop
bb jklo
aa adfg
bb kkkkk

select fn_functionname(字段2,';') from 表1 group by 字段1

结果如下
aa uiop;adfg
bb jklo;kkkkk

如果不可以,用一个条SELECT语句也可以!
...全文
121 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
消失风雨中 2006-09-15
  • 打赏
  • 举报
回复
噢,谢了
zjcxc 2006-09-15
  • 打赏
  • 举报
回复
可以肯定地说, 2000没有通用的.
xzq111 2006-09-14
  • 打赏
  • 举报
回复
create table t1(col1 varchar(10),col2 varchar(20))
insert t1
select 'aa' as col1,'uiop' as col2

UNION ALL
SELECT 'bb','jklo'
UNION ALL
SELECT'aa','adfg'
UNION ALL
SELECT'bb','kkkkk'

CREATE function dbo.join_str(@col1 varchar(100),@split char(1))
returns varchar(2000)
as
begin
declare @str varchar(2000)
set @str=''
select @str=@str+@split+rtrim(col2) from t1 where col1=@col1
select @str=right(@str,len(@str)-1)
return @str
end
go
--using function
select col1,dbo.join_str(col1,';') from t1 group by col1
hellowork 2006-09-14
  • 打赏
  • 举报
回复
if object_id('fnJoin') is not null
drop function fnJoin
GO
create function fnJoin(@colA varchar(10),@seperator varchar(10))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str = ''
select @str = @str+ @seperator + B from tbtmp where A = @colA
return stuff(@str,1,1,'')
end
GO

if object_id('tbtmp') is not null
drop table tbtmp
GO
create table tbtmp(A varchar(10),B varchar(10))
insert tbtmp
select 'aa', 'uiop' union all
select 'bb', 'jklo' union all
select 'aa', 'adfg' union all
select 'bb', 'kkkkk'

select A,dbo.fnJoin(A,':') from tbtmp group by A
real_name 2006-09-14
  • 打赏
  • 举报
回复
create function f_functionname(@id varchar(10))
returns varchar(8000)
as
begin
declare @returnstr varchar(8000)
select @returnstr = ''
select @returnstr = @returnstr + 字段1+' '+字段2+';' from table2 where 字段1=@id
return left(@returnstr,len(@returnstr)-1)
end

select 字段1,dbo.f_functionname(字段1) as bbb
from 表1 group by 字段1
消失风雨中 2006-09-14
  • 打赏
  • 举报
回复
我们现在的系统是SQL2000的呀
zjcxc 2006-09-14
  • 打赏
  • 举报
回复
sql 2005也可以通过.net写自定义的聚合.


sql 2000就没有通用的处理方法了.
zjcxc 2006-09-14
  • 打赏
  • 举报
回复
sql 2005可以一句实现.

参考:
http://blog.csdn.net/zjcxc/archive/2006/06/09/784287.aspx
SQL 2005溢用之:合并列值
消失风雨中 2006-09-14
  • 打赏
  • 举报
回复
各位哥哥姐姐,有没有通用的那种呀!
fcuandy 2006-09-14
  • 打赏
  • 举报
回复
2000下通用的是没有的,都是具体到表的

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧