【问题标题】:Sql Error : If Else with Case When in SQLSql 错误:如果在 SQL 中出现其他情况,则为大小写
【发布时间】:2017-12-28 03:55:11
【问题描述】:

谁能告诉我这里出了什么问题?

我遇到了多个语法错误。

IF (('05:00' < CAST(t.Scan_In_Prod AS TIME)) AND (CAST(t.Scan_In_Prod AS TIME) < '08:00'))
BEGIN
    (CASE WHEN (CAST(t.Scan_In_Prod as TIME) < CAST(t.Scan_Out_Prod AS TIME)) AND (CAST(t.Scan_Out_Prod as TIME) < '19:00')
             THEN 'Early Out'
          WHEN ('07:00' < CAST(t.Scan_In_Prod AS TIME)) AND (CAST(t.Scan_In_Prod AS TIME) < CAST(t.Scan_In_Prod AS TIME))
             THEN 'Late In'
     END)
END

错误如下:

消息 156,第 15 级,状态 1,第 25 行
关键字“if”附近的语法不正确。

消息 156,第 15 级,状态 1,第 29 行
关键字“case”附近的语法不正确。

消息 156,第 15 级,状态 1,第 42 行
关键字“case”附近的语法不正确。

消息 102,第 15 级,状态 1,第 107 行
't' 附近的语法不正确。

【问题讨论】:

  • 您有一个 CASE 声明孤立地坐在那里,没有任何查询。这就是问题所在。
  • 但 CASE 有表达式 --> (CAST(t.Scan_In_Prod as TIME)
  • 能否告知如何修改整个查询?谢谢。

标签: sql-server syntax syntax-error


【解决方案1】:

尝试在内部CASE 表达式前面加上SELECT

IF '05:00' < CAST(t.Scan_In_Prod AS TIME) AND
   '08:00' > CAST(t.Scan_In_Prod AS TIME)
BEGIN
    SELECT
        CASE WHEN CAST(t.Scan_In_Prod AS TIME) < CAST(t.Scan_Out_Prod AS TIME) AND
                  CAST(t.Scan_Out_Prod AS TIME) < '19:00'
             THEN 'Early Out'
             WHEN '07:00' < CAST(t.Scan_In_Prod AS TIME) AND
                  CAST(t.Scan_In_Prod as TIME) < CAST(t.Scan_In_Prod AS TIME)
             THEN 'Late In' END
END

【讨论】:

    【解决方案2】:

    没有括号,你应该使用 select 我只改变

    if (('05:00' < CAST(t.Scan_In_Prod as TIME)) and  (CAST(t.Scan_In_Prod as TIME) < '08:00'))
     begin   
     SELECT case when (CAST(t.Scan_In_Prod as TIME) < CAST(t.Scan_Out_Prod as TIME)) and (CAST(t.Scan_Out_Prod as TIME) < '19:00')
            then 'Early Out'
              when  ('07:00' < CAST(t.Scan_In_Prod as TIME)) and (CAST(t.Scan_In_Prod as TIME) < CAST(t.Scan_In_Prod as TIME))
            then 'Late In'
     end
    
    end
    

    【讨论】:

    • 我很高兴 user548682 。你能看看我的回答有用吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    相关资源
    最近更新 更多