我试图让下面的代码工作,单独的两个代码(在WHEN部分和ELSE部分)工作,但是当在这个CASE语句中使用时,我得到一个错误
“Incorrect Syntax near ‘CAST’,expected ‘AS’.” error.
基本上如果WHEN语句代码等于或大于24,那么如果THEN语句的值低于24,则使用THEN语句,然后使用ELSE语句.
在尝试几个小时之后,我似乎无法让这个工作有任何迹象表明我将出现错误的地方将不胜感激.
SELECT CASE WHEN (convert(float,datediff(mi,start_work,end_work))/60) >= '24' THEN (convert(float,end_work))/60) ELSE (CAST(convert(varchar(2),dateadd(minute,datediff(minute,start_time,end_time),0),114) * 60 + RIGHT (convert(varchar(5),114),CASE WHEN CHARINDEX(':',convert(varchar(5),114)) > 0 THEN LEN(convert(varchar(5),114))-3 ELSE LEN(convert(varchar(5),114)) END) AS decimal) / 60 FROM NDB.dbo.statusa INNER JOIN NDB.dbo.details ON statusa.vkey = details.vkey INNER JOIN NDB.dbo.chegu ON statusa.ckey = NDB.dbo.chegu.gkey WHERE start_time!= end_time AND string1 = Visit_Id and NDB.dbo.chegu.name = 'loft' AS [Working]
解决方法
您需要关闭案例陈述
case when ... then ... else ... end