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

问题描述 投票:0回答:3

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

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

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

  1. 我怎样才能查询正美元金额?即。我有3条记录,10条,-5条,10条。结果将是20条。
  2. 我想要一个绝对值作为总和。即。我有3条记录,10,-5,10。结果将是25。

谢谢。

sql
3个回答
1
投票

请尝试以下查询。谢谢。

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

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

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.
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
© www.soinside.com 2019 - 2024. All rights reserved.