2

クエリで特定の結果を得るために、いくつかのテーブルを結合する方法を考え出すのに苦労しています。

私は2つのテーブルを持っています:

  1. 可能なすべての&レコードを含む[T_Prog]テーブルで、各レコードの金額が それぞれの.ID1ID2PRGCASHMONTHNUMBER

  2. すべての可能性のある&レコードの割合を含む[T_ALS]テーブルで、それぞれの.ID1ID2ALSCASHMONTHNUMBER

私がやりたいのは、 フィールドPRGCASHALSCASHフィールドをそれぞれID1ID2MONTHNUMBERフィールドに適切に一致させて、単一のクエリにまとめることです。

各テーブル内のレコードの一意性はID1ID2MONTHNUMBERフィールドの組み合わせです。

私が抱えている問題は、[T_ALS]テーブルに含まれるエントリよりもMONTHNUMBER、一意ID1ID2組み合わせごとにテーブルに多くのエントリが含まれていること[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   |         |
4

1 に答える 1