2015-06-25 87 views
1

我有一個表TEST,列VALUE,VALUE_SIM,SIM_STATUS,ID。我想爲ID = 288更新SIM_STATUS列。我也想在更新後顯示這些列。通過比較同一表中的兩個不同列來更新列

的條件是:

1. SIM_STATUS = 0 when VALUE = VALUE_SIM. 
2. SIM_STATUS = 1 when VALUE < VALUE_SIM. 
3. SIM_STATUS = 2 when VALUE > VALUE_SIM. 

我寫了下面的查詢,但它顯示一個錯誤。要

("UPDATE TEST" 
"SET SIM_STATE = (CASE WHEN VALUE = VALUE_SIM THEN SIM_STATE = 0 END)" 
"SET SIM_STATE = (CASE WHEN VALUE < VALUE_SIM THEN SIM_STATE = 1 END)" 
"SET SIM_STATE = (CASE WHEN VALUE > VALUE_SIM THEN SIM_STATE = 2 END)" 
"where ID = 288 "); 
+0

和錯誤是什麼? –

+0

錯誤:QODBCResult :: exec:無法執行語句:「[Microsoft] [SQL本機客戶端] [SQL Server] Falsche語法in'='。'[Microsoft] [SQL Native Client] [SQL Server] Anweisung en)konnte(n)nicht vorbereitet werden。「 –

回答

4

查詢是:

UPDATE TEST 
    SET SIM_STATE = (CASE WHEN VALUE = VALUE_SIM THEN 0 
          WHEN VALUE < VALUE_SIM THEN 1 
          WHEN VALUE > VALUE_SIM = 2 
        END) 
WHERE NUMBER = 288; 

您的查詢有幾個語法錯誤。我甚至不知道是否打算將雙引號作爲查詢的一部分。

+0

謝謝Gordon Linoff。查詢正在工作。 –

+0

我也想在更新後顯示列。 –

+0

如果您還有其他問題,則可以將其作爲問題提問,而不是發表評論。 –

1

這將做我猜

UPDATE TEST 
SET 
    SIM_STATE = 
    CASE WHEN VALUE < VALUE_SIM THEN 1 
+ CASE WHEN VALUE > VALUE_SIM THEN 2 
+ CASE WHEN VALUE = VALUE_SIM THEN 0 

WHERE ID = 1 
相關問題