| 分類:[VB.NET]
まずはBテーブルとB2テーブルの連結部分のみ考えて見ましょう。
(提示されたものをデータ限定して引用しています) Bテーブル A-1 2005/01/01 100 AAA A-1 2005/01/02 200 AAA
B2テーブル AAA 1 1000 AAA 2 2000
をCODE2で連結すると A-1 2005/01/01 100 AAA 1 1000 A-1 2005/01/01 100 AAA 2 2000 A-1 2005/01/02 200 AAA 1 1000 A-1 2005/01/02 200 AAA 2 2000 と抽出されるんですよ。
なぜかというと BテーブルのCODE2の値に対してB2テーブルに該当するのは2レコードですよね? ([NO]=[1,2]の2レコードあるので) なんで、Bテーブルの値は一緒だけどB2テーブルの値が異なる行が2つ表示されるんです。
これをGROUP BYで合算すると・・・ [KIN]=[100+100+200+200]=[600] [KIN2]=[1000+2000+1000+2000]=[6000] となってしまうわけです。
なんで、300、3000って値がほしいのに、600、6000って値が取れるのは BテーブルとB2テーブルの結合条件が不足しているからなんです。
よって、BテーブルとB2テーブルの結合条件をちゃんと考慮すれば Miya様が望まれている結果が出るのではないでしょうか?
|