通过比较同一表中的两个不同列来更新列

时间:2015-06-25 11:30:35

标签: sql sql-server

我有一个表TEST,其中包含VALUE,VALUE_SIM,SIM_STATUS,ID列。我想更新SIM_STATUS的列ID = 288。我还想在更新后显示列。

条件是:

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 ");

2 个答案:

答案 0 :(得分: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;

您的查询有几个语法错误。我甚至不知道您是否打算将双引号作为查询的一部分。

答案 1 :(得分:0)

这就是我猜的

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