1

在此处输入图像描述我的存储过程是这样的:

ALTER procedure [dbo].[Driverperformance]
@Ecode nvarchar(50),  
@startdate datetime, 
@enddate datetime  
as   begin   

SELECT  e.Ecode, CAST(q.dtime AS DATE) as Date ,  e.Ename,  count(q.Ecode) CntEcode 
FROM EmployeeMaster_tbl e 
JOIN Transaction_tbl q  
ON e.Ecode = q.Ecode     

where q.Ecode=@Ecode and dtime >= '' + @startdate +'' and dtime <= ''+@enddate +''

group by e.Ecode, e.Ename, CAST(q.dtime AS date) 

ORDER BY CAST(q.dtime AS date)--e.Ecode DESC

end

这工作正常。在这个我得到[(q.Ecode)]的计数是完美的。我在事务表名称(DelEcode)中还有一个字段。我想以相同的方式计算(DelEcode)。sam方式意味着我是如何计算 Ecode 的,我必须计算 DelEcode aslos.so 我必须在当前存储过程中进行哪些更改..在执行时我会像这样输出:但我想再多写一列cntDelcode 我想显示 DelEcode 的计数

4

2 回答 2

0

这样的事情让用户可以选择是查询 ECODE 还是 DELECODE:

ALTER procedure [dbo].[Driverperformance]
@code nvarchar(50),  
@startdate datetime, 
@enddate datetime,
@test VARCHAR(1)
as   

IF @test = 1 BEGIN
    SELECT  e.Ecode, CAST(q.dtime AS DATE) as Date ,  e.Ename,  count(q.Ecode) CntEcode 
    FROM EmployeeMaster_tbl e 
    JOIN Transaction_tbl q  
    ON e.Ecode = q.Ecode     
    where q.Ecode=@code and dtime >= '' + @startdate +'' and dtime <= ''+@enddate +''
    group by e.Ecode, e.Ename, CAST(q.dtime AS date) 
    ORDER BY CAST(q.dtime AS date)--e.Ecode DESC
    END
ELSE
    BEGIN

    SELECT  e.delEcode, CAST(q.dtime AS DATE) as Date ,  e.Ename,  count(q.delEcode) Cntcode 
    FROM EmployeeMaster_tbl e 
    JOIN Transaction_tbl q  
    ON e.delEcode = q.delEcode     
    where q.delEcode=@code and dtime >= '' + @startdate +'' and dtime <= ''+@enddate +''
    group by e.delEcode, e.Ename, CAST(q.dtime AS date) 
    ORDER BY CAST(q.dtime AS date)--e.Ecode DESC
    END
END

这是未经测试的,但你可以看到我要去哪里。额外的输入允许用户选择要测试的字段。

于 2013-09-04T13:36:52.483 回答
0

您还可以运行以下代码:

ALTER procedure [dbo].[Driverperformance]
@Ecode nvarchar(50),  
@startdate datetime, 
@enddate datetime,
@test bit=0  
as   begin   

SELECT  e.Ecode, CAST(q.dtime AS DATE) as Date ,  e.Ename,  case when @test=1 then count(q.Ecode) else count(q.delCode) end as CntEcode 
FROM EmployeeMaster_tbl e 
JOIN Transaction_tbl q  
ON e.Ecode = q.Ecode     

where q.Ecode=@Ecode and dtime >= '' + @startdate +'' and dtime <= ''+@enddate +''

group by e.Ecode, e.Ename, CAST(q.dtime AS date) 

ORDER BY CAST(q.dtime AS date)--e.Ecode DESC

end
于 2013-09-04T14:17:58.373 回答