首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >存储过程中的多列计数

存储过程中的多列计数
EN

Stack Overflow用户
提问于 2013-09-04 21:25:22
回答 2查看 1.3K关注 0票数 1

我的存储过程如下:

代码语言:javascript
代码运行次数:0
运行
复制
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)中多了一个字段.i想要计数( DelEcode )同样的way.sam方式意味着我如何计算Ecode的计数我必须计算DelEcode aslos.so我必须计算在我当前存储的procedure..while执行中所做的更改输出如下所示:但我想再获得一个列cntDelcode,因为我想显示DelEcode的计数

EN

回答 2

Stack Overflow用户

发布于 2013-09-04 21:36:52

下面的代码让用户可以选择是查询ECODE还是DELECODE:

代码语言:javascript
代码运行次数:0
运行
复制
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

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

票数 0
EN

Stack Overflow用户

发布于 2013-09-04 22:17:58

您还可以运行以下代码:

代码语言:javascript
代码运行次数: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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18615128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档