2017-08-25 98 views
1

以下代碼的目標是在某人在1月1日之後加入俱樂部時將月份數增加2。當我運行它時,我收到一條錯誤消息。DATEPART IN SELECT CASE不工作

我對類似用法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 <> '' 

回答

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 - WHEN條款需要有全部信息