2017-03-13 11 views
2

私は合計値を持つ必要があるクエリを持っていますが、私のテーブルの列の1つに増分と減分の値があります。
デクリメントされた値の場合、その値はテーブルに正の値として格納されていても負である必要があります。
インクリメントされた値は、正の値のままです。条件とのSQLの合計

このような私のクエリを見て:

SELECT 
    SUM(
     CASE WHEN ACTIVITY_TYPE = '0' THEN -(ACTIVITY_VALUE) 
     ELSE ACTIVITY_VALUE 
     END 
     ) AS NEW_ACTIVITY_VALUE 
FROM V_EMPLOYEE_PAYACT 
WHERE ACTIVITY_TYPE IN ('0','1') 
    AND EMPLOYEE_NO = '00002789' 
    AND ((YEAR = 2014 AND MONTH <= 4) 
     OR 
     (YEAR > 2013 AND YEAR <2014) 
     OR 
     (YEAR = 2013 AND MONTH >= 5)) 
GROUP BY YEAR, MONTH 

それは、この結果を返す:
NEW_ACTIVITY_VALUE
391.00
-600.00

私は(-209のように合計値を必要としますそれらの2つの番号)

+1

GROUP BYをスキップします。 – jarlh

+0

@jarlhありがとう!できます!ありがとうございました! – hotseetotsee

+1

@hotseeto​​tsee '(2013年から2013年)' - wat? –

答えて

1

現在、月と年の固有の組み合わせごとの合計をグループ化しています。あなたは総和をしたい場合は、単にgroup by句をドロップ:

SELECT 
    SUM(
     CASE WHEN ACTIVITY_TYPE = '0' THEN -(ACTIVITY_VALUE) 
     ELSE ACTIVITY_VALUE 
     END 
     ) AS NEW_ACTIVITY_VALUE 
FROM V_EMPLOYEE_PAYACT 
WHERE ACTIVITY_TYPE IN ('0','1') 
    AND EMPLOYEE_NO = '00002789' 
    AND ((YEAR = 2014 AND MONTH <= 4) 
     OR 
     (YEAR > 2013 AND YEAR <2014) 
     OR 
     (YEAR = 2013 AND MONTH >= 5)) 
1

は、この方法を試してください。

SELECT 
    SUM(
     CASE 
     WHEN ACTIVITY_TYPE = '0' THEN 
      - (ACTIVITY_VALUE) 
     ELSE 
      ACTIVITY_VALUE 
     END 
    ) AS NEW_ACTIVITY_VALUE 
FROM 
    V_EMPLOYEE_PAYACT 
WHERE 
    ACTIVITY_TYPE IN ('0', '1') 
AND EMPLOYEE_NO = '00002789' 
AND (
    (YEAR = 2014 AND MONTH <= 4) 
    OR (YEAR > 2013 AND YEAR < 2014) 
    OR (YEAR = 2013 AND MONTH >= 5) 
)