2つ以上のテーブルを持つ左結合を適用しているときに、行の合計を取得しようとしています。それは間違ったサム関数をもたらす結果の行列を作成しているようです。1つ以上のテーブルを持つSum句を使用した左結合が正しくないSum
例:
まず表:カスタマー
第二表:TotalAssets
第三表:TotalLiability
テーブルの構造:
カスタマー
CustID(int) CustomerName(varchar)
1 Abc
2 Def
3 Ghi
TotalAssets
CustID Amount
1 2000
1 1000
2 600
TotalLiability
CustID Amount
1 1000
1 1000
2 800
予想される出力
CustID TotalAssets TotalLiability
1 3000 2000
2 600 800
現在のクエリ
Select c.CustID , Sum(a.Amount) , Sum(l.Amount) From Customer c
left join TotalAssests a on a.CustID = c.CustID
left join TotalLiability l on l.CustID = c.CustID
Group by c.CustID
この現在のクエリとの問題は、私が最初に左に複数のレコードを持つ最初のセットを作成して参加した後、第2 1が適用されると考えると合計が正しくないです。
すべてのヘルプは高く評価され
UPDATE:
私は法に従うことによって、いくつかの幸運を見つけることが、私はすることにより、グループ内の7-8以上の要素を持っている私の場合のように、それは悪い/ハックオプションだし、より多くの左句を追加すると、クエリの管理が困難になります。
正しい結果を結果が、これは動作するはず
Select Set1.CustID , Set1.TotalAssets, Sum(l.Amount) from (Select c.CustID , Sum(a.Amount) as TotalAssets From Customer c
left join TotalAssests a on a.CustID = c.CustID
Group by c.CustID)Set1
left join TotalLiability l on l.CustID = Set1.CustID.
Group by Set1.CustID , Set1.TotalAssets
予想外の結果は何ですか? – artm
あなたは何を得ていますか?あなたのテーブル構造を把握させたり、独自のテストデータを作成したりしないでください。 – Blorgbeard
@artm私はサンプル出力とサンプルデータを使った短いクエリで質問を書き直しました。 –