TSQL - 你计算值然后求和,或先求和然后计算值?

时间:2016-08-08 13:32:05

标签: sql-server tsql group-by sum

我觉得这很愚蠢 - 我可能忘记了数学规则。

我正在尝试根据净销售额,成本和折扣计算毛利。

根据我的计算方式,我得到两个不同的值:

(sum(netsales) - sum(cost)) + sum(billbackdollars) as CalculateOutsideSum,
sum((netsales - cost) + BillBackDollars) as CalculateWithinSum

这是基本的交易事实表。

在这个特定的例子中,有大约90个记录被总结,我得到以下结果

CalculateOutsideSum: 234.77
CalculateWithinSum:  247.70

我想象这将是某种传递属性,考虑到它的总和,两种结果都是一样的。

哪种方法正确?

2 个答案:

答案 0 :(得分:1)

从数学的角度来看,你的公式应该得到完全相同的值。

无论如何,在这种情况下,最好在计算后执行求和。

打开响应后编辑:

使用 isnull 函数或其他提高数据精度的转换函数来处理数据。

在总和之后应该应用降低数据精度的舍入,格式化和转换。

答案 1 :(得分:0)

刚想出来......

问题是Net Sales为3行为空,导致计算变为空,并且错误地求和。添加一个isnull后,两个总和都是相同的。