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

Sql 通过比较同一表中的两个不同列来更新列,sql,sql-server,Sql,Sql Server,我有一个表TEST,其中包含VALUE、VALUE\u SIM、SIM\u STATUS、ID列。我想为ID=288更新列SIM\u 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. 1。当值=VALUE\u SIM时,SIM\u STA

我有一个表
TEST
,其中包含
VALUE、VALUE\u SIM、SIM\u STATUS、ID
列。我想为
ID=288
更新列
SIM\u 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.
1。当值=VALUE\u SIM时,SIM\u STATUS=0。
2.当值值SIM时,SIM卡状态=2。
我编写了以下查询,但它显示了一个错误

("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 ");
(“更新测试”
“设置SIM卡状态=(值=值时的情况,然后SIM卡状态=0结束)”
“设置SIM卡状态=(值<值SIM卡然后SIM卡状态=1结束时的情况)”
“设置SIM卡状态=(当值>值SIM卡然后SIM卡状态=2结束时的情况)”
“其中ID=288”);

您需要的查询是:

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;
更新测试
设置SIM卡状态=(值=值时为0)
当值小于值时,则为1
当值>值_SIM=2时
(完)
其中数字=288;

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

您想要的查询是:

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;
更新测试
设置SIM卡状态=(值=值时为0)
当值小于值时,则为1
当值>值_SIM=2时
(完)
其中数字=288;
您的查询有几个语法错误。我甚至不知道您是否打算将双引号作为查询的一部分。

我想这样就可以了

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
更新测试
设置
模拟状态=
值<值>1时的情况
+值>值时的情况2
+当VALUE=VALUE\u SIM然后为0时的情况
其中ID=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
更新测试
设置
模拟状态=
值<值>1时的情况
+值>值时的情况2
+当VALUE=VALUE\u SIM然后为0时的情况
其中ID=1

错误:QODBCResult::exec:无法执行语句:“[Microsoft][SQL Native Client][SQL Server]Nähe von'='.[Microsoft][SQL Native Client][SQL Server]中的Falsche语法。”错误:QODBCResult::exec:无法执行语句:“[Microsoft][SQL Native Client][SQL Server]der Nähe von'='.[Microsoft][SQL Native Client][SQL Server]Anweisung(en)konnte(N)nicht vorbereitet werden中的Falsche语法。“我还想在更新后显示列。如果您还有其他问题,则可以作为问题提问,而不是在注释中提问。我还想在更新后显示列。如果您还有其他问题,那么,作为问题而不是评论提问是合适的。