【问题标题】:Join multiple Crosstabs in access report在访问报告中加入多个交叉表
【发布时间】:2014-01-16 06:57:13
【问题描述】:
我有两个几乎相同的交叉表查询,一个是按订单制作的,另一个不是按订单制作的(开/关复选框(交叉表上的标准是真或假)) MTO 一个有 203 行,NMTO 一个如果我离开连接,则有 160 行,所以我从 MTO 获取所有内容我得到 213 行,但我需要总共有 225 行但是 17 行只有 NMTO 数据并且没有被包括在内我试图仅使用条件重写连接而且我没有运气
我可能错过了一些简单的东西(我希望)
【问题讨论】:
标签:
ms-access-2007
left-join
conditional-statements
crosstab
【解决方案1】:
您需要创建一个包含键列的 2 个数据集的“超集”,然后在查询中间使用外连接使用它
第 1 阶段:创建一个 UNION 查询以从 MTO 和 NMTO 获取完整的唯一键集。这应该包含构成超集的 225 条记录。
第 2 阶段:创建第二个查询,其中包括此 UNION 查询以及 MTO 和 NMTO。将连接设置为包括来自 UNION 查询的所有内容和来自 MTO 的匹配记录;对 UNION 查询和 NMTO 之间的连接执行完全相同的操作。
现在应该返回 225 条记录。
================================================ ====================
编辑:工作示例
假设 2 个表(或查询)mto 和 nmto 具有要加入的一致 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;
您可以扩展此方法以包含 2 个以上的表格,超集位于中心。如有任何问题,请在下方发表评论,我将提供屏幕截图和/或更多信息。