与上一个问题相关,我问过here
如果可能的话,我想帮助如何声明多于SET或CASE。我正在使用SQL Fiddle进行测试,请参阅here
{
EmpID int,
startdate datetime,
finishdate datetime,
Discount varchar(4),
SomeData varchar(4)
}
UPDATE Persons SET [Discount] = case, [SomeData] = case
when startdate > dateadd(month,-4,getdate()) and startdate <= getdate()
then '5%' AND SomeData '<5'
when startdate < dateadd(month,-4,getdate()) Then '10%' AND SomeData '>4'
End
SELECT * FROM Persons
如果有人能帮助我,请提前感谢您。
答案 0 :(得分:0)
你有很多语法错误,也可能是一些逻辑错误。 我设法编写了无聊的运行,但我怀疑它是否取得了您正在寻找的结果。
请参阅here
您的主要语法/语义问题是:
CASE语句计算set o boolean表达式并返回(单个)值。
someData '<4'
实际上没有意义(并且引发错误,因为它只是一个列名后跟一个字符串文字而之间没有操作)。考虑到someData是一个varchar(4),很难说你想要什么。