带条件的SQL求和
我有一个需要求和值的查询,但在我的表的一列中,有一个递增和递减值带条件的SQL求和,sql,sql-server,select,sum,Sql,Sql Server,Select,Sum,我有一个需要求和值的查询,但在我的表的一列中,有一个递增和递减值 对于递减值,它的值需要为负值,即使它在表中存储为正值 而对于递增的值,它保持为正值 我的查询如下所示: SELECT SUM( CASE WHEN ACTIVITY_TYPE = '0' THEN -(ACTIVITY_VALUE) ELSE ACTIVITY_VALUE END ) AS NEW_ACTIVITY_VALUE FROM V_EMPLOYEE_
对于递减值,它的值需要为负值,即使它在表中存储为正值
而对于递增的值,它保持为正值 我的查询如下所示:
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
选择
总数(
活动类型为“0”时的情况,然后-(活动值)
其他活动值
结束
)作为新的\u活动\u值
来自V_EMPLOYEE_PAYACT
其中活动\输入('0','1'))
员工编号为“00002789”
和((年=2014年,月=2013年,年=5))
按年份、月份分组
它返回以下结果:新的活动值
391.00
-600.00
我需要将值设置为-209(这两个数字的总和)您当前正在按照月份和年份的唯一组合对总和进行分组。如果您想要总计,只需删除
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))
选择
总数(
活动类型为“0”时的情况,然后-(活动值)
其他活动值
结束
)作为新的\u活动\u值
来自V_EMPLOYEE_PAYACT
其中活动\输入('0','1'))
员工编号为“00002789”
和((年=2014年,月=2013年,年=5))
试试这个:
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)
)
选择
总数(
案例
当活动类型为“0”时,则
-(活动值)
其他的
活动值
结束
)作为新的\u活动\u值
从…起
雇员薪酬法案
哪里
活动\键入('0','1')
员工编号为“00002789”
及(
(年份=2014年和2013年,年份<2014年)
或(年份=2013,月份>=5)
)
跳过分组。@jarlh非常感谢您!它起作用了!谢谢大家!@HotseeToSee(年份>2013和年份)