《关于groupby文本合并的函数》由会员分享,可在线阅读,更多相关《关于groupby文本合并的函数(3页珍藏版)》请在金锄头文库上搜索。
1、以下表为zz_group os_no,prd_no,qtyA111A111B111B111A121B121NULLNULLNULLcreate function f_un1(name varchar(255)returns varchar(100)asbegindeclare s varchar(100)declare link varchar(255)set s=set link= select s=s+os_no+link from zz_group where prd_no=nameset s=left(s,len(s)-len(link)return sendselect dbo.f_
2、un1(prd_no) as os_no,prd_no,sum(qty) from ZZ_GROUP group by os_no,prd_no结果如下图A A B B 112A A B B 112A B121A B121如果以TF_PSS表为例的话,如下图所示alter function f_un(name varchar(255)returns varchar(100)asbegindeclare s varchar(100)declare link varchar(255)set s=set link= select s=s+os_no+link from tf_pss where pr
3、d_no=nameset s=left(s,len(s)-len(link)return sendselect dbo.f_un(prd_no) as os_no,prd_no,sum(qty) from tf_pss group by os_no,prd_no一,如果是sql2000,只有用自定义函数create function dbo.f_str(name int) returns varchar(100)asbegin declare str varchar(1000) set str = select str = str + cast(内容 as varchar) from 表名 w
4、here id = name set str = right(str , len(str) - 1) return strendgo-调用函数select 姓名 , 内容 = dbo.f_str(姓名) from 表名 group by 姓名drop function dbo.f_str二,如果是sql2005,那么:select 姓名, 内容 = stuff(select 内容 from 表名 t where 姓名 = 表名.姓名 for xml path() , 1 , 1 , )from 表名 group by 姓名评论 | 1 0 2011-02-25 17:04 shutao917
5、| 十三级 select distinct name,(select 内容 as text() from test where name=a.name order by id for xml path() 内容from test a评论(1) | 1 0 2011-02-25 17:39 lonxa26 | 五级 立的视图才能实现你要求的效果以下为例子:-(1)建立辅助统计的函数f_un,这里假设订单号字段类型为varcharcreate function f_un(name varchar(255),color varchar(255)returns varchar(8000)asbegin
6、declare s varchar(8000)declare link varchar(255)set s = set link = -这里是连接单号的字符,按你的要求设置为空格-组合字符串select s = s +订单号+link from dingdan_tb where 名称 = name and 颜色 = color-处理多余的linkset s = left(s,len(s) - len(link)-返回结果return send-(2)以上是函数,创建上述函数f_un后,用以下语句创建视图select dbo.f_un(名称,颜色) as 订单号, 名称, 颜色, sum(订单数量) as 订单数量from dingdan_tbgroup by 名称, 颜色