在访问报告中加入多个交叉表

时间:2014-01-15 20:27:33

标签: ms-access-2007 left-join conditional-statements crosstab

我有两个几乎相同的交叉表查询,一个是按顺序进行的,另一个是不按顺序进行的(开/关复选框(交叉表上的条件为真或假))MTO一个有203行,NMTO一个如果我离开连接有160行,所以我从MTO获得所有内容我得到213行但是我需要总共225行但是17行只有NMTO数据并且没有被包含我试图仅使用条件重写连接而且我没有运气

我可能遗漏了一些简单的东西(我希望)

1 个答案:

答案 0 :(得分:0)

您需要创建包含关键列的2个数据集的“超集”,然后使用外部联接在查询中间使用

第1阶段:创建UNION查询以从MTO和NMTO获取完整的唯一键集。这应包含构成超集的225条记录。

第2阶段:创建第二个查询,其中包含此UNION查询以及MTO和NMTO。设置连接以包括来自UNION查询和来自MTO的匹配记录的所有内容;对UNION查询和NMTO之间的连接执行完全相同的操作。

现在应该返回225条记录。

=============================================== ===================

编辑:工作实例

假设有2个表(或查询),mtonmto以及要加入的一致ID字段,以下查询将起作用:

SELECT superset.id, mto.mto_1, mto.mto_2, nmto.nmto_1, nmto.nmto_2
FROM ((SELECT mto.id from mto UNION SELECT nmto.id from nmto)  AS superset 
LEFT JOIN mto ON superset.id = mto.id) 
LEFT JOIN nmto ON superset.id = nmto.id;

您可以扩展此方法以包含两个以上的表,其中超集位于中心。如有任何问题请在下面评论,我将提供屏幕截图和/或更多信息。