2016-07-05 80 views
4

我有我已經在程序中使用這個下面的查詢,想一個數字轉換成積極的,因爲現在它是負的。要負數轉變爲正

UPDATE SHIPMENT 
     SET TOTAL_SHIP_UNIT_COUNT = (
      CASE 
      WHEN V_SHIP_UNIT_COUNT > v_diff_cost 
      THEN V_SHIP_UNIT_COUNT - v_diff_cost 
      ELSE v_diff_cost  - V_SHIP_UNIT_COUNT 
      END) 
     WHERE SHIPMENT_GID = v_shipment_id; 
     COMMIT; 
在此查詢v_diff_cost值

是負的,因此在執行(V_SHIP_UNIT_COUNT - v_diff_cost)訴訟中,添加兩個值,所以如果我將v_diff_cost值轉換爲正,那麼減去時,它會給我正確的結果。

假設V_SHIP_UNIT_COUNT值是33 v_diff_cost value是-10那麼在這種情況下,它應該執行行動33-10 = 23但它正在做的33-(-10)= 43,這不應該發生。

好心幫我。 由於

回答

4

使用ABS()功能,

MSDN:一個數學函數,返回指定數值表達式的絕對(正)值。

UPDATE SHIPMENT 
    SET TOTAL_SHIP_UNIT_COUNT = (
     CASE 
     WHEN V_SHIP_UNIT_COUNT > v_diff_cost 
     THEN V_SHIP_UNIT_COUNT - ABS(v_diff_cost) 
     ELSE ABS(v_diff_cost)  - V_SHIP_UNIT_COUNT 
     END) 
    WHERE SHIPMENT_GID = v_shipment_id; 
    COMMIT; 
0

試試這個代碼:

UPDATE SHIPMENT 
     SET TOTAL_SHIP_UNIT_COUNT = (
      CASE 
      WHEN V_SHIP_UNIT_COUNT > v_diff_cost 
      THEN V_SHIP_UNIT_COUNT - abs(v_diff_cost) 
      ELSE v_diff_cost  - abs(V_SHIP_UNIT_COUNT) 
      END) 
     WHERE SHIPMENT_GID = v_shipment_id; 
     COMMIT; 
0

試試這個:

UPDATE SHIPMENT 
SET TOTAL_SHIP_UNIT_COUNT = ABS(V_SHIP_UNIT_COUNT - ABS(v_diff_cost)) 
WHERE SHIPMENT_GID = v_shipment_id;