2015-03-02 84 views
0

只是想知道,是否有原因,爲什麼下面的代碼不起作用?我試圖更新2列值,如果他們達到多個標準,但我得到一個錯誤,說'關鍵字附近的錯誤語法'如果'和'總'附近的語法不正確。任何幫助非常感謝!if else語句設置條件(SQL)

update [dbo].[wages table] 
IF([criteria1]='AA1' and [criteria2]='50yrs and below' and [criteria3]= 'X<=50') 
set [Total ] = '0', [Employee ]='0' else 
if ([criteria1]='AA1' and [criteria2]='50yrs and below' and [criteria3]= 'X<=50') 
set [Total ] = '10', [Employee ]='10' else 
if ([criteria1]='AA1' and [criteria2]='50yrs and below' and [criteria3]= 'X<=50') 
set [Total ] = '20', [Employee ]='20' else 
if ([criteria1]='AA1' and [criteria2]='50yrs and below' and [criteria3]= 'X<=50') 
set [Total ] = '30', [Employee ]='30' else 
set [Total ] = 'NULL', [Employee ]='NULL' 
+0

是條件'如果([標準1] = 'AA1' 和[criteria2] = '50yrs和下方的' 和[criteria3] = 'X <= 50')'相同對全部? – 2015-03-02 09:44:27

+1

您使用的是哪種數據庫平臺? SQL Server,Oracle等。 – 2015-03-02 09:46:05

+0

使用CASE(表達式)。 – jarlh 2015-03-02 09:47:21

回答

1

我想這是你正在嘗試做的:

UPDATE [dbo].[wages table] 
    SET [Total] = CASE [criteria3] WHEN 'X<=50' THEN '0' ELSE 'NULL' END, 
    SET [Employee] = CASE [criteria3] WHEN = 'X<=50' THEN '0' ELSE 'NULL' END 
WHERE [criteria1]='AA1' and [criteria2]='50yrs and below' 

如果criteria1criteria2是相同的所有那麼您可以在WHERE條款檢查。我相信區別在於criteria3

是這樣的:

UPDATE [dbo].[wages table] 
    SET [Total] = CASE [criteria3] WHEN 'X<=50' THEN '0' WHEN 'X<=40' THEN 1 WHEN 'X<=30' THEN 3 ELSE 'NULL' END, 
    SET [Employee] = CASE [criteria3] WHEN 'X<=50' THEN '0' WHEN 'X<=40' THEN 1 WHEN 'X<=30' THEN 3 ELSE 'NULL' END 
WHERE [criteria1]='AA1' and [criteria2]='50yrs and below' 
2

SQL您可以在CASE表達這種類型的語句:

UPDATE [dbo].[wages table] 
SET [Total] = CASE WHEN ([criteria1]='AA1' AND [criteria2]='50yrs and below' AND [criteria3]= 'X<=50') THEN '0' 
        WHEN ([criteria1]='AA1' AND [criteria2]='50yrs and below' AND [criteria3]= 'X<=50') THEN '0' 
        WHEN ([criteria1]='AA1' AND [criteria2]='50yrs and below' AND [criteria3]= 'X<=50') THEN '0' 
        ELSE NULL END, 
    [Employee ] = CASE WHEN ([criteria1]='AA1' AND [criteria2]='50yrs and below' AND [criteria3]= 'X<=50') THEN '0' 
        WHEN ([criteria1]='AA1' AND [criteria2]='50yrs and below' AND [criteria3]= 'X<=50') THEN '0' 
        WHEN ([criteria1]='AA1' AND [criteria2]='50yrs and below' AND [criteria3]= 'X<=50') THEN '0' 
        ELSE NULL END 

除此之外,我看不到你的情況有什麼區別。

+0

我可以在一行中設置2個值,而不是再次複製條件語句嗎?我的情況在現實中是不同的。 – Laughy 2015-03-02 09:57:55

+0

@Laughy,不,你不能 – 2015-03-02 10:01:54