我正在努力研究如何加入几个表以在查询中获得特定结果。
我有两张桌子:
一个
[T_Prog]
表,其中包含所有可能的ID1
&ID2
记录,PRGCASH
每条记录的数量与其各自的MONTHNUMBER
.一个
[T_ALS]
表,其中包含所有可能的ID1
&ID2
记录的一部分,其中ALSCASH
每个记录都针对其各自的MONTHNUMBER
.
我想要做的是将PRGCASH
andALSCASH
字段放入单个查询中,并与它们各自的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 | |