使用case语句设置查询

时间:2018-12-12 10:56:16

标签: sql sql-server

我正在尝试执行此查询

但是我收到语法错误

运行MS SQL Management Studio

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

我的查询

conversations

6 个答案:

答案 0 :(得分:1)

我会这样写:

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。

答案 1 :(得分:0)

删除案例重复两次,一个表达式足以满足您的要求

update [Test$ABC]
Set [Unit Price] =(
CASE WHEN [Item No_]= '12345' THEN '445'
     WHEN [Item No_]= '67890' THEN '645'
END
)
where [Item No_] in ('12345','67890')
and [Sales Start Date]='01/Apr/19'
and [Store No_]=''

答案 2 :(得分:0)

您只需要一个case表达式:

update [Test$ABC]
Set [Unit Price] =(CASE WHEN [Item No_] = '12345' THEN '445'
                        WHEN [Item No_] = '67890' THEN '645'
                   END)
where [Item No_] in ('12345','67890') and 
      [Sales Start Date] = '01/Apr/19'and [Store No_] = ''

答案 3 :(得分:0)

尝试如下,我认为单价是int数据类型,所以我忽略了那里的报价

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

CASE WHEN [Item No_]= '12345'
 THEN 445   
 else 645  
END

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

答案 4 :(得分:0)

请找到SQL SERVER CASE语句的语法,

CASE应该以关键字“ CASE”开头,并以关键字“ END”结尾

输入您的代码:

删除下面一行中的大小写

-当[Item No _] ='67890'然后是'645'

时的情况

/ ******************************************** /

CASE表达式

值_1时,然后结果_1时,

当value_2则返回result_2

...    当value_n THEN result_n

ELSE结果

END

/ ******************************************** /

答案 5 :(得分:0)

您的语法不正确,您的代码应类似于

UPDATE [Test$ABC]
SET [Unit Price] = CASE [Item No_] WHEN '12345' THEN '445'
                                   WHEN '67890' THEN '645'
                   END

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

请访问并在线阅读 CASE