例如工资的统计
大体结构如下:集团、分公司、部门、人员,基本工资、补贴、应发工资
如何实现如下目标,只做一个存储过程或函数,根据参数的不同,实现按照不同层次进行汇总。而不是做4个不同的存储过程。

解决方案 »

  1.   

    --这个意思?你把你需要的数据表现,贴出来!
    select 集团,
    应发工资=sum(基本工资)+sum(补贴)
    from 表
    group by 集团
      

  2.   

    最简单也最笨的办法:
    --------------------------------------------------------------------
    create procedure sp_test(@para int)
    as
    begin
        if @para=0
            --按集团汇总的SQL
            ...
        else if @para=1
            --按分公司汇总的SQL
            ...
        else if @para=2
            --按部门汇总的SQL
            ...
        else if @para=3
            --按人员汇总的SQL
            ...
    end
    go
      

  3.   

    create procedure GetSalaryTotal(@type int)
    as
    begin
      select case @type when 1 then 集团
                        when 2 then 分公司
                        when 3 then 部门 else 人员 end,
             基本工资=sum(基本工资),补贴=sum(补贴),应发工资=sum(应发工资)
       from tablename
      group by case @type when 1 then 集团
                        when 2 then 分公司
                        when 3 then 部门 else 人员 end
    end