zoukankan      html  css  js  c++  java
  • SQL 分组统计之汇总乘积

    表 TableOne
    Value Catalog
    1 CatalogA
    2 CatalogB
    3 CatalogB
    3 CatalogA
    4 CatalogA
    6 CatalogB


    要求:按照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。
  • 相关阅读:
    java基础笔记-类与对象(多态)
    oracle中trim,ltrim,rtrim函数用法
    git stash
    update from select
    oracle 查看主外键约束
    eclipse git 解决冲突
    根据Request获取客户端IP
    简单说说Spring Security 使用(附加验证码登录,自定义认证)
    linux的nohup命令的用法
    Python包管理工具介绍
  • 原文地址:https://www.cnblogs.com/king_astar/p/117390.html
Copyright © 2011-2022 走看看