您的位置:首页 > 数据库

SQL 分组统计之------汇总乘积

2005-03-12 14:29 411 查看
表 TableOne
Value Catalog
1CatalogA
2CatalogB
3CatalogB
3CatalogA
4CatalogA
6CatalogB
要求:按照Catalog来汇总value的乘积

自定义函数中的输入参数只能使用标量值,不能把table当参数输入!

而存储过程的输入参数则不同:

数的数据类型。所有数据类型(包括 textntextimage)均可以用作存储过程的参数。不过,cursor 数据类型只能用于 OUTPUT 参数。如果指定的数据类型为 cursor,也必须同时指定 VARYING 和 OUTPUT 关键字

因为自定义函数可以返回一个表。

函数中可以使用函数

函数中不能使用存储过程

存储过程中可以使用函数

但存储过程中不能使用存储过程

事实上,存储过程能使用存储过程,比如这样:在procedure2 里面可以这样使用exec Procedure1,不过这样使用意义不是很大

创建一个自定义标量值函数

用于计算某个catalog的乘积

ALTER FUNCTION dbo.getTimeByCatalog

    (

    @Catalog varchar(100)

    )

RETURNS real

AS

    BEGIN

        Declare @Timeall2 real

set @Timeall2 = 1

select @Timeall2 = @Timeall2*cast(ID as float) from TableOne

where Catalog=@catalog

return @Timeall2

    END

创建存储过程

ALTER PROCEDURE dbo.RockTest2

AS

begin 

create table #Temp2

(

Catalog varchar(100)

)

insert into #Temp2 (Catalog) select distinct catalog from TableOne

select Catalog,dbo.getTimeByCatalog(catalog)

from #Temp2

end

这样就可以得到一个乘积汇总的数据了。

当然如果还要加限制条件,可以把函数和存储过程中的TableOne换成一个带表值的自定义函数

如果大家还有好的办法,请指教12。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: