SQL,关键字 'FROM' 附近的 CASE 语句语法不正确

标签 sql sql-server tsql syntax case

我试图让下面的代码工作,两段代码(在 WHEN 部分和 ELSE 部分)分别工作,但是当在此使用时CASE 语句我收到错误

"Incorrect syntax near 'CAST', expected 'AS'." error.

基本上,如果 WHEN 语句代码等于或大于 24,则使用 THEN 语句,如果其低于 24,则使用 ELSE 声明。

在尝试了几个小时后,我似乎无法让它工作,任何关于我哪里出错的指示将不胜感激。

SELECT CASE 
        WHEN 
            (convert(float,datediff(mi, start_work, end_work))/60) >= '24'
        THEN
            (convert(float,datediff(mi, start_work, end_work))/60)
        ELSE
            (CAST(convert(varchar(2), dateadd(minute, datediff(minute, start_time, end_time), 0), 114) 
            * 60 + RIGHT (convert(varchar(5), dateadd(minute, datediff(minute, start_time, end_time), 0), 114),
            CASE WHEN CHARINDEX(':',convert(varchar(5), dateadd(minute, datediff(minute, start_time, end_time), 0), 114)) > 0
            THEN LEN(convert(varchar(5), dateadd(minute, datediff(minute, start_time, end_time), 0), 114))-3
            ELSE LEN(convert(varchar(5), dateadd(minute, datediff(minute, start_time, end_time), 0), 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语句

 case when ... then ... else ... end

关于SQL,关键字 'FROM' 附近的 CASE 语句语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17991341/

相关文章:

SQL 组合两个 SQL 语句的输出以返回一个 bool 值

php - Mysql Select查找重复项

asp.net - 加入问题,最好的选择是什么?

sql-server - 数据库中已经有一个名为 'tblPerson_Gender_FK' 的对象

sql - 如何通过特定顺序检测值的变化

sql - 更新时违反约束

mysql - 导入数据时mysql中的quotechar是什么意思?

sql - 如何将多个查询优化为单个查询

SQL-如何在自动生成的临时表中添加自动增量ID

SQL 'CASE WHEN x' 与 'CASE x WHEN' 大于条件?