考虑一下Oracle中的一个简单的表:
buySell quantity
--------------------
buy 200
sell 100
...我们希望获得表的净数量,如果是净买入,则为正,否则为负。如何在一个查询中实现它?如果可能,最好使用通用解决方案(可用于其他DBMS)。但是,如果有一个更好的、仅供Oracle使用的解决方案,如果您也能分享它,将不胜感激。
更普遍的是,一种进行自定义聚合的方法(例如,在聚合之前,根据其他列的值将不同的数字与记录的数量相乘)。
发布于 2013-09-14 18:27:27
Select
Sum(Case When buySell = 'sell' then -1 else 1 end * quantity)
From
table发布于 2013-09-14 18:27:22
您需要将sell转换为负数;因此将其乘以-1。
select sum( case when buysell = 'sell' then -1 * quantity
else quantity
end ) as result
from table这应该适用于大多数SQL方言。
发布于 2013-09-16 19:36:32
你也可以这样做。
select sum(case when buysell = 'buy' then quantity else 0 end ) -
sum(case when buysell = 'sell' then quantity else 0 end )
from tablehttps://stackoverflow.com/questions/18800719
复制相似问题