クエリで特定の結果を得るために、いくつかのテーブルを結合する方法を考え出すのに苦労しています。
私は2つのテーブルを持っています:
可能なすべての&レコードを含む
[T_Prog]テーブルで、各レコードの金額が それぞれの.ID1ID2PRGCASHMONTHNUMBERすべての可能性のある&レコードの割合を含む
[T_ALS]テーブルで、それぞれの.ID1ID2ALSCASHMONTHNUMBER
私がやりたいのは、 フィールドPRGCASHとALSCASHフィールドをそれぞれID1のID2とMONTHNUMBERフィールドに適切に一致させて、単一のクエリにまとめることです。
各テーブル内のレコードの一意性はID1、ID2とMONTHNUMBERフィールドの組み合わせです。
私が抱えている問題は、[T_ALS]テーブルに含まれるエントリよりもMONTHNUMBER、一意ID1のID2組み合わせごとにテーブルに多くのエントリが含まれていること[T_Prog]です。
じゃあ、こうすれば…
SELECT [T_Prog].ID1, [T_Prog].ID2, [T_Prog].MONTHNUMBER, [T_Prog].PRGCASH, [T_ALS].ALSCASH
FROM [T_Prog]
LEFT JOIN [T_ALS] ON ([T_Prog].ID1 = [T_ALS].ID1) AND ([T_Prog].ID2 = [T_ALS].ID2) AND ([T_Prog].MONTHNUMBER = [T_ALS].MONTHNUMBER)
...すべての可能なレコードを取得しますが、テーブルに同等のレコードがないため、それ以降の追加レコードは失われ[T_ALS]ます。MONTHNUMBER[T_Prog]
このままやったら…
SELECT [T_ALS].ID1, [T_ALS].ID2, [T_ALS].MONTHNUMBER, [T_Prog].PRGCASH, [T_ALS].ALSCASH
FROM [T_ALS]
LEFT JOIN [T_Prog] ON ([T_ALS].ID1 = [T_Prog].ID1) AND ([T_ALS].ID2 = [T_Prog].ID2) AND ([T_ALS].MONTHNUMBER = [T_Prog].MONTHNUMBER)
...[T_ALS]テーブルには可能なすべてのレコードの一部しか含まれていないため、可能なすべてのレコードを取得することはできません。
これは、サンプルデータを含む2つのテーブルと、私が達成しようとしている最終的なクエリテーブルの図です:
Progテーブル:
|[ID1]|[ID2]|[MONTHNUMBER]|[PRGCASH]|
| 1 | A | 1 | 600 |
| 1 | B | 1 | 500 |
ALSテーブル:
|[ID1]|[ID2]|[MONTHNUMBER]|[ALSCASH]|
| 1 | A | 1 | 100 |
| 1 | A | 2 | 100 |
| 1 | A | 3 | 100 |
理想的な結果:
|[ID1]|[ID2]|[MONTHNUMBER]|[PRGCASH]|[ALSCASH]|
| 1 | A | 1 | 600 | 100 |
| 1 | A | 2 | | 100 |
| 1 | A | 3 | | 100 |
| 1 | B | 1 | 500 | |