首页 > 解决方案 > 使用 case 语句设置查询

问题描述

我正在尝试执行此查询

但我得到一个语法错误

运行 MS SQL 管理工作室

关键字“CASE”附近的语法不正确。

我的查询

update [Test$ABC]
Set [Unit Price] =(

CASE WHEN [Item No_]= '12345' THEN '445'

CASE WHEN [Item No_]= '67890' THEN '645'

END

)

where [Item No_] in ('12345','67890')
and [Sales Start Date]='01/Apr/19'
and [Store No_]=''

标签: sqlsql-server

解决方案


我会这样写:

update [Test$ABC]
    set [Unit Price] = (CASE WHEN [Item No_] = 12345 THEN 445
                             WHEN [Item No_] = 67890 THEN 645
                             ELSE [Unit Price]
                        END)
where [Item No_] in (12345, 67890) and
      [Sales Start Date] = '2018-04-01' and
      [Store No_] = '';

笔记:

  • [Item No_]可能是一个数字,所以只能与数字比较。
  • Price几乎可以肯定是一个数字,所以不需要单引号。
  • ELSE如果您有错字,可以节省问题。如果 中的列表与CASE不匹配WHERE,那么这不会是update其他行。
  • 日期应存储为日期,比较值应使用标准格式——YYYY-MM-DD。

推荐阅读