以下代码的目标是,当有人在1月1日之后加入俱乐部时,将月数增加2。当我运行它时,我收到一条错误消息。
我对类似用法here的研究表明我的语法是正确的。在我的情况下,我做错了什么?
错误102:'<' .`
附近的语法不正确
这是完整的代码:
SELECT
ID, [HIREDate],
CASE [HIREDate]
WHEN 12 - (MONTH([HIREDate])) <> 0
THEN 12 - (MONTH([HIREDate])) * 2
ELSE 0
END AS Days
FROM
dbo.table
WHERE
column1 <> ''
答案 0 :(得分:1)
你正在混合CASE
表达式的两个“样式” - 试试这个:
SELECT
ID, [HIREDate],
CASE
WHEN 12 - (MONTH([HIREDate])) <> 0
THEN 12 - (MONTH([HIREDate])) * 2
ELSE 0
END AS Days
FROM
dbo.table
WHERE
column1 <> ''
如果您在代码中CASE
之后定义了一列:
CASE [HireDate]
然后WHEN
子句只包含值 - 而不是表达式:
CASE MONTH([HireDate])
WHEN 1 THEN ....
WHEN 2 THEN .....
如果您需要在WHEN
子句中包含表达式,那么无法在CASE
之后立即放置一列 - {{ 1}}子句需要拥有所有信息