写两次SQL UPDATE 不就结了

解决方案 »

  1.   

    分两次执行:
    update 表名 set field3=(field1-field2)*0.05 where (field1-field2)>=200
    update 表命 set field3=0 where (field1-field2)<200
    —————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”等';
    I.Desire := '加不加分随你';
    —————————————————————————————————
           
      

  2.   

    UPDATE youtable
       SET 字段3 = CASE
                   WHEN (字段1-字段2)>0 THEN (字段1-字段2)
                   ELSE 0
                   END
      

  3.   

    UPDATE TABLE1
    SET 字段3=(字段1-字段2)*0.05 where 字段2的值>=200
    SET 字段3=0 where 字段2的值<200
    如果非要写一句的话,就把它写成存储过程就可以了。
      

  4.   

    update 表名
     set 字段3=(case when (字段1-字段2)>200 =(字段1-字段2)*0.05 else
       0 end)
      

  5.   

    select 字段1,  字段2, 
           iif(字段1-字段2>200,(字段1-字段2)*0.05, 0) as 字段3
    from MyTable
    where ....或者select 字段1,  字段2, (字段1-字段2)*0.05) as 字段3
    from MyTable
    where 字段1-字段2>200 
    and ....
    union
    select 字段1,  字段2, 0 as 字段3
    from MyTable
    where 字段1-字段2<=200
    and ....