Sql server 存储过程中多列的计数
我的存储过程如下所示:Sql server 存储过程中多列的计数,sql-server,stored-procedures,Sql Server,Stored Procedures,我的存储过程如下所示: 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
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
ALTER过程[dbo]。[Driverperformance]
@Ecode nvarchar(50),
@开始日期时间,
@结束日期日期时间
作为开始
选择e.Ecode,CAST(q.dtime作为日期)作为日期,e.Ename,count(q.Ecode)作为日期
来自员工主管
加入事务\u tbl q
关于e.Ecode=q.Ecode
其中q.Ecode=@Ecode和dtime>='+@startdate+''和dtime类似的内容让用户可以选择是查询Ecode还是删除代码:
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
ALTER过程[dbo]。[Driverperformance]
@代码nvarchar(50),
@开始日期时间,
@enddate日期时间,
@测试VARCHAR(1)
像
如果@test=1,则开始
选择e.Ecode,CAST(q.dtime作为日期)作为日期,e.Ename,count(q.Ecode)作为日期
来自员工主管
加入事务\u tbl q
关于e.Ecode=q.Ecode
其中q.Ecode=@code和dtime>=''+@startdate+''和dtime='+@startdate+''和dtime您还可以运行以下代码:
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
ALTER过程[dbo]。[Driverperformance]
@Ecode nvarchar(50),
@开始日期时间,
@enddate日期时间,
@测试位=0
作为开始
选择e.Ecode,CAST(q.dtime作为日期)作为日期,e.Ename,case当@test=1时,然后计数(q.Ecode),否则计数(q.delCode)作为CntEcode结束
来自员工主管
加入事务\u tbl q
关于e.Ecode=q.Ecode
其中q.Ecode=@Ecode和dtime>='+@startdate+''和它需要的dtime,并在ELSE之前结束。就像我说的,你可能需要稍微调整一下,但你应该能够从那里使用它。好的,现在执行了,但是先生,我想同时获得两个计数,你能把“count(q.Ecode)CntEcode”改为“count(q.Ecode)CntEcode,count(q.delcode)cntdel”吗??delcode是一个关键字段还是一个数据列?DelEcod是一个关键字段..我的意思是这是我表中的一个字段..如果我做了更改,将使用正确的Ecode计数。因为我们没有检查的情况,我很难理解你在这里的确切意思。您是否有可能编辑原始问题以放置未编辑表的快照?(不泄露任何私人数据!)。然后,您可以准确地指出您想要的答案是什么样的。您想要将两个结果相加,还是返回一个同时包含两个值的结果?我想要返回一个同时包含两个值的结果或者我想要同时获取两个计数