2016-08-08 15 views
2

私は愚かなことを尋ねる - おそらく私が忘れている数学のルールがあります。TSQL - 値の合計を計算するか、最初に合計して値を計算しますか?

純売上高、費用、および請求書に基づいて総利益を計算しようとしています。

私は計算を行う方法に基づいて2つの異なる値を取得する:

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

これは、基本的なトランザクションファクトテーブルのオフに来ています。

は、この特定の例では、約90レコードが合計されてある、と私は、これは推移プロパティのいくつかの並べ替えなの想像

CalculateOutsideSum: 234.77 
CalculateWithinSum: 247.70 

次の結果を取得し、両方の結果はそれだけだ考えると同じになります総和

どの方法が正しいですか?

+0

両方のメソッドが同じ結果を返す必要があります。丸めの問題、データの変更、選択方法の変更などですが、数学的な推論が正しいことがわかります – Cato

+0

確認していただきありがとうございます。 – IronicMuffin

答えて

0

はちょうどそれを考え出した...

問題は、売上高が計算がnullになることを引き起こして、3行の場合はnullだった、と間違って合算しました。 isnullを追加すると、両方の合計が同じになります。

1

数学的には、両方の式で正確に同じ値を取得する必要があります。

とにかく、この場合、計算後に合計を実行する方がよいでしょう。オープナー応答AFTER

EDIT:

とデータ精度を高めるISNULL機能や他のキャスト関数を使用してデータを扱います。

データ精度を低下させる丸め、書式設定および鋳造は、合計の後に適用する必要があります。

関連する問題