我的存储过程如下:
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)]的计数是perferct.i在事务表名称(DelEcode)中还有一个字段。我想以相同的方式计算(DelEcode)。山姆方式意味着我如何计算Ecode,因为我必须计算DelEcode aslos.so我必须在我当前的存储过程中做出什么改变...同时执行我这样出去:但我想得到还有一个列cntDelcode,我想显示DelEcode的计数
答案 0 :(得分: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
这是未经测试的,但你可以看到我要去的地方。额外的输入允许用户选择要测试的字段。
答案 1 :(得分: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