【Vegas原创】经典的用于报表的Procedure

    因报表经常计算百分比之类的,但平常的SQL查询比较慢,适合使用Procedure以优化程序。

---Vegas Created 2007/10/16

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[pms_potential_Chart]
@i int ,           --potential
@j nvarchar(50),   --dept
@year nvarchar(50),  
@pa nvarchar(50)
as

declare @a int
declare @b int
declare @name nvarchar(50)
declare @month int


if @year='-1'   ----year
begin
 
select @year=substring(CONVERT(varchargetdate(), 120 ),1,4
end 

if @pa='-1'    -----pa
begin 
 
select @month=month(getdate())
if @month<6
begin
set @pa='1'
end
else 
 
begin
set @pa='2'
end
end

if @i=1         ----potential
begin
set @name='HPP'
end 
else if @i=2
begin 
set @name='VP'
end
else if @i=3
begin
set @name='BCP'
end


if @j='all'           ---dept
begin 
select @a=count(distinct part2.workid) from part2,members where  members.workid=part2.workid and part2.potential=@i and part2.year=@year and part2.pa_type=@pa
select @b=count(distinct part2.workid) from part2,members where potential is not null and potential<>0 and members.workid=part2.workid and part2.year=@year and part2.pa_type=@pa
select @name,@a/@b*1.0
end

else 
if @j='DTS' or @j='DTM'
begin 
select @a=count(distinct part2.workid) from part2,members where  members.workid=part2.workid and members.dept_id like @j and part2.potential=@i  and part2.year=@year and part2.pa_type=@pa
select @b=count(distinct part2.workid) from part2,members where potential is not null and potential<>0 and members.workid=part2.workid and members.dept_id= @j  and part2.year=@year and part2.pa_type=@pa
select @name,@a/@b*1.0
end
else 
begin 
select @a=count(distinct part2.workid) from part2,members where  members.workid=part2.workid and members.dept_id like @j and part2.potential=@i and part2.year=@year and part2.pa_type=@pa
select @b=count(distinct part2.workid) from part2,members where potential is not null and potential<>0 and members.workid=part2.workid and members.dept_id like @j+'___' and part2.year=@year and part2.pa_type=@pa
select @name,@a/@b*1.0
end


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值