100分题:如何对多条字符串记录进行"汇总"运算?

来源:百度知道 编辑:UC知道 时间:2024/07/04 07:40:17
如何对多条字符串记录进行"汇总"运算?
我有多条记录,要对其分类汇总.如下表,想通过形如 SELECT cardtype,sum(numbers) AS 数量, str_sum(CARDID) AS 号码范围 FROM card GROUP BY cardtype.
原表记录:
cardtype numbers cardid
A 3 01001
A 2 01002
A 1 01003
A 2 01007
B 3 05005
B 5 05006
统计后形成:
cardtype 数量 号码范围
A 8 01001-01003,01007
B 8 05005-05006

现在这个str_sum()函数,就是我想象出来的功能,不能哪位大侠可以帮我写出解答?
当然,如果能够求出 01001,01002,01003,01007这样的结果也算是帮了大忙了,我再想办法变成01001-01003,01007的形式.
(注:我是想用vs2008c#+sqlserver2005写一个简单的项目,如果能用oracle写的SQL也行)

create function str_sum(@cardid varchar(10))
returns varchar(8000)
as
begin
declare @cardid_tmp varchar(8000)
set @cardid_tmp=''
select @cardid_tmp=@cardid_tmp+','+cardid from card where cardtype=@cardid
return(stuff(@cardid_tmp,1,1,''))
end
测试通过:
SELECT cardtype,sum(numbers) AS 数量, dbo.str_sum(cardtype) AS 号码范围 FROM card GROUP BY cardtype

标记

递归连接

楼上的请问return(stuff(@cardid_tmp,1,1,''))什么意思呢

exit when cur%notfound or cur%notfound is null;

http://zhidao.baidu.com/question/13891737.html