SQL,查询正结果的总和,绝对值

时间:2018-03-05 16:05:14

标签: sql

我有以下查询,它返回总金额。

select sum(cast(dollars as dec)) from financials

这包括正面和负面的价值观。 我想要两件事:

  1. 如何才能查询正数金额?即。我有3条记录,10,-5,10。结果将是20。

  2. 我想要一个绝对值作为总和。即。我有3条记录,10,-5,10。结果将是25。

  3. 感谢。

3 个答案:

答案 0 :(得分:3)

FOR 1)使用条件SUM()

SELECT SUM( CASE WHEN dollars > 0 then dollars ELSE 0 END) as positive_sum,
       SUM( CASE WHEN dollars < 0 then dollars ELSE 0 END) as negative_sum
FROM financials

FOR 2)使用ABS()

SELECT SUM( ABS( dollars ) )
FROM financials

答案 1 :(得分:1)

请尝试以下查询。感谢。

1) select sum(cast(dollars as dec)) 
from financials
where dollars > 0;

2) select sum(cast(abs(dollars) as dec)) 
from financials;

答案 2 :(得分:1)

您有两个查询。解决方案如下

1.
select sum(dollars) from financials
2. 
select sum((case when dollars>0 then dollars end))+sum((case when dollars<0 then -1*dollars end)) from financials