有两个存储过程  两个分别返回一个值,一个求了删除版号次数,一个求了下活次数,最后想求每个业务员的删除比例即删除版号次数/下活次数,如何使两个存储过程结合起来。
我用这个可以求得某个时间段某个业务员删除的版号:
CREATE PROCEDURE  dbo.网上登记业务版号删除统计
(
@开始时间 datetime,
@终止时间 datetime,
@业务员 nvarchar(50),
@总计 int out
)
ASif( @业务员='' or @业务员 is null)
begin
select @总计=count(*) from del_b2h2 where 来稿日期 BETWEEN @开始时间 AND @终止时间 and (审稿生产备注 like '%网登%')
end
else
begin
 Select @总计=count(*) from del2_bh2 where 来稿日期 BETWEEN @开始时间 AND @终止时间 and(审稿生产备注 like '%网登%')
 AND 
      (业务员 = @业务员)
end
GO用这个存储过程写的某个业务员总共下活的数量。
CREATE PROCEDURE  dbo.网上登记业务版号统计
(@开始时间 datetime,
@终止时间 datetime,
@业务员 nvarchar(50),
@总计 int out
)
ASif( @业务员='' or @业务员 is null)
begin
select @总计=count(*) from 订单 where 来稿日期 BETWEEN @开始时间 AND @终止时间
end
else
begin
 Select @总计=count(*) from 订单 where 来稿日期 BETWEEN @开始时间 AND @终止时间
 AND 
      (业务员 = @业务员)
end
GO
我想把这两个存储过程结合起来,如何写一个存储过程结果为每个业务员的删除比例,即一次求得个个业务员的删除次数/下活数是多少.

解决方案 »

  1.   


    CREATE PROCEDURE  dbo.网上登记业务版号统计
    (
    @开始时间 datetime,
    @终止时间 DATETIME,
    @业务员 nvarchar(50),
    @总计 int out
    )
    ASif( @业务员='' or @业务员 is null)
    begin
    select @总计=count(*) from 订单 where 来稿日期 BETWEEN @开始时间 AND @终止时间
    UNION ALL 
    select @总计=count(*) from del_b2h2 where 来稿日期 BETWEEN @开始时间 AND @终止时间 and (审稿生产备注 like '%网登%')
    end
    else
    begin
    Select @总计=count(*) from 订单 where 来稿日期 BETWEEN @开始时间 AND @终止时间
    UNION ALL 
    Select @总计=count(*) from del2_bh2 where 来稿日期 BETWEEN @开始时间 AND @终止时间 and(审稿生产备注 like '%网登%')
    AND
          (业务员 = @业务员)
    end
    GO 
      

  2.   

    CREATE PROCEDURE  dbo.网上登记业务版号删除统计 

    @开始时间 datetime, 
    @终止时间 datetime, 
    @业务员 nvarchar(50), 
    --@总计 int out 

    AS 
    set nocount on
    declare @总计1 int,@总计2 int
    if( @业务员='' or @业务员 is null) 
    begin 
    select @总计1=count(*) from del_b2h2 where 来稿日期 BETWEEN @开始时间 AND @终止时间 and (审稿生产备注 like '%网登%') 
    select @总计2=count(*) from 订单 where 来稿日期 BETWEEN @开始时间 AND @终止时间 
    print '条件1:'+ @总计1
    print '条件1:' + @总计2
    end 
    else 
    begin 
    Select @总计1=count(*) from del2_bh2 where 来稿日期 BETWEEN @开始时间 AND @终止时间 and(审稿生产备注 like '%网登%') 
    AND 
          (业务员 = @业务员) 
    Select @总计2=count(*) from 订单 where 来稿日期 BETWEEN @开始时间 AND @终止时间 
    AND 
          (业务员 = @业务员) 
    print '条件2:' + @总计1
    print '条件2:' + @总计2
    end 
    set nocount off
      

  3.   

    CREATE PROCEDURE  dbo.网上登记业务版号删除统计 

    @开始时间 datetime, 
    @终止时间 datetime, 
    @业务员 nvarchar(50), 
    --@总计 int out 

    AS 
    set nocount on
    declare @总计1 int,@总计2 int
    if( @业务员='' or @业务员 is null) 
    begin 
    select @总计1=count(*) from del_b2h2 where 来稿日期 BETWEEN @开始时间 AND @终止时间 and (审稿生产备注 like '%网登%') 
    select @总计2=count(*) from 订单 where 来稿日期 BETWEEN @开始时间 AND @终止时间 
    print '条件1:'+ @总计1
    print '条件1:' + @总计2
    print '结果:' + ltrim(@总计1/@总计2)
    end 
    else 
    begin 
    Select @总计1=count(*) from del2_bh2 where 来稿日期 BETWEEN @开始时间 AND @终止时间 and(审稿生产备注 like '%网登%') 
    AND 
          (业务员 = @业务员) 
    Select @总计2=count(*) from 订单 where 来稿日期 BETWEEN @开始时间 AND @终止时间 
    AND 
          (业务员 = @业务员) 
    print '条件2:' + @总计1
    print '条件2:' + @总计2
    print '结果:' + ltrim(@总计1/@总计2)
    end 
    set nocount off
      

  4.   

    这样就可以把你的两个存储过程用起来了三;
    不过你这个可以写到一个存储过程里,写到一个里面好些  declare @ret_sum1 int
      EXECUTE @ret_sum1 = 网上登记业务版号删除统计 参数  declare @ret_sum2 int
      EXECUTE @ret_sum2 = 网上登记业务版号统计 参数  declare @lastvalue
      set @lastvalue=@ret_sum1/(@ret_sum2*1.0)
      

  5.   

    改一下  declare @ret_sum1 int
      EXECUTE  网上登记业务版号删除统计 @开始时间,@终止时间,@业务员,@ret_sum1 output  declare @ret_sum2 int
      EXECUTE 网上登记业务版号统计 @开始时间,@终止时间,@业务员,@ret_sum2 output  declare @lastvalue
      set @lastvalue=@ret_sum1/(@ret_sum2*1.0)