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。
  • 相关阅读:
    C++基础知识(二)
    C++基础知识(一)
    RT-thread 设备驱动组件之IIC总线设备
    RT-thread 设备驱动组件之SPI设备
    RT thread 设备驱动组件之USART设备
    RT-thread 设备驱动组件之PIN设备
    RT-thread finsh组件工作流程
    C语言知识点
    RT-thread main函数分析
    堆和栈的区别
  • 原文地址:https://www.cnblogs.com/king_astar/p/117390.html
Copyright © 2011-2022 走看看