如何在sql server 2008中的case语句中使用sum [英] How use sum in case statement in sql server 2008

查看:108
本文介绍了如何在sql server 2008中的case语句中使用sum的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好



这里我的概率我不知道怎么总结以防万一



my代码:



Hi All

Here my prob i dont know how to sum in case satement

my code :

SELECT DISTINCT CASE WHEN(ReaCodeC in ('PRS'))
THEN (select count(EmpCodeC) from ClientDeployment where Dated between '2015-03-01' and '2015-03-30' and ShiftGroupC='Night' and EmpCodeC='1288')
WHEN (ReacodeC NOT IN ('PRS')) then '0' end from Daily where ClockDateD between '2015-04-01' and '2015-04-30' and ShiftGroupCodeC = 'Night' and EmpCodeC in ('1288')







输出:



0

12(返回两排)



这里我想加0 + 12 = 12(想要退回单行)



怎么做这个



谢谢!




output :

0
12 (return two row)

here i want to add 0+12=12(want to return single row)

how to make this

Thanks !

推荐答案

这将工作



This will work

DECLARE @ClientDeployment AS TABLE (EmpCodeC NVARCHAR(30),Dated DATETIME,ShiftGroupC NVARCHAR(30))

DECLARE @Daily AS TABLE (ReaCodeC  NVARCHAR(30),ClockDateD DATETIME,ShiftGroupCodeC NVARCHAR(30),EmpCodeC NVARCHAR(30))



INSERT INTO @ClientDeployment (EmpCodeC,Dated,ShiftGroupC)
					  VALUES ('1288',GETDATE()-10,'Night')
INSERT INTO @ClientDeployment (EmpCodeC,Dated,ShiftGroupC)
					  VALUES ('1288',GETDATE()-9,'Night')
INSERT INTO @ClientDeployment (EmpCodeC,Dated,ShiftGroupC)
					  VALUES ('1288',GETDATE()-8,'Night')
INSERT INTO @ClientDeployment (EmpCodeC,Dated,ShiftGroupC)
					  VALUES ('1288',GETDATE()-7,'Night')
INSERT INTO @ClientDeployment (EmpCodeC,Dated,ShiftGroupC)
					  VALUES ('1288',GETDATE()-6,'Night')
INSERT INTO @ClientDeployment (EmpCodeC,Dated,ShiftGroupC)
					  VALUES ('1288',GETDATE()-5,'Night')
					  
					  
INSERT INTO @Daily (ReaCodeC,ClockDateD,ShiftGroupCodeC,EmpCodeC)		
    VALUES ('PRS',GETDATE()-10,'Night','1288')	 

					  
INSERT INTO @Daily (ReaCodeC,ClockDateD,ShiftGroupCodeC,EmpCodeC)		
    VALUES ('PRS',GETDATE()-9,'Night','1288')	
    
    
					  
INSERT INTO @Daily (ReaCodeC,ClockDateD,ShiftGroupCodeC,EmpCodeC)		
    VALUES ('PRS',GETDATE()-8,'Night','1288')	
    
    
 					  
INSERT INTO @Daily (ReaCodeC,ClockDateD,ShiftGroupCodeC,EmpCodeC)		
    VALUES ('PRS',GETDATE()-7,'Night','1288')	

					  
INSERT INTO @Daily (ReaCodeC,ClockDateD,ShiftGroupCodeC,EmpCodeC)		
    VALUES ('PRS',GETDATE()-6,'Night','1288')	
    
    					  
INSERT INTO @Daily (ReaCodeC,ClockDateD,ShiftGroupCodeC,EmpCodeC)		
    VALUES ('PRS',GETDATE()-5,'Night','1288')	
    
    					  
INSERT INTO @Daily (ReaCodeC,ClockDateD,ShiftGroupCodeC,EmpCodeC)		
    VALUES ('MRS',GETDATE()-10,'Night','1288')	 

					  
INSERT INTO @Daily (ReaCodeC,ClockDateD,ShiftGroupCodeC,EmpCodeC)		
    VALUES ('MRS',GETDATE()-9,'Night','1288')	
    
    
					  
INSERT INTO @Daily (ReaCodeC,ClockDateD,ShiftGroupCodeC,EmpCodeC)		
    VALUES ('MRS',GETDATE()-8,'Night','1288')	
    
    
 					  
INSERT INTO @Daily (ReaCodeC,ClockDateD,ShiftGroupCodeC,EmpCodeC)		
    VALUES ('MRS',GETDATE()-7,'Night','1288')	

					  



SELECT TOP 1 CASE WHEN(ReaCodeC IN ('PRS'))
                          THEN (SELECT COUNT(EmpCodeC) FROM @ClientDeployment 
								WHERE Dated BETWEEN '2015-05-20' AND '2015-05-30' AND ShiftGroupC='Night' AND EmpCodeC='1288')
								ELSE '0' END FROM @Daily 
WHERE ClockDateD BETWEEN '2015-05-20' AND '2015-05-30' AND ShiftGroupCodeC = 'Night' AND EmpCodeC IN ('1288')







Out put:



6




Out put :

6


这篇关于如何在sql server 2008中的case语句中使用sum的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆