我正在尝试执行此查询
但是我收到语法错误
运行MS SQL Management Studio
关键字“ CASE”附近的语法不正确。
我的查询
conversations
答案 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
其他行。答案 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
。