将空白视为具有所有可能值的查询

将空白视为具有所有可能值的查询

假设我有下表:

Field_1 Field_2 Field_3
A
A C
A C F
G
H
C
Field_1 Field_2
A C

如果我将它们拉到 Access 中的查询设计窗口中并将两个具有通用名称的字段连接起来,我可以轻松地拉出一个查询,显示“AC”和“ZB”的记录(总共四条记录)。

我想要实现的是:假设在第二个表中,在第二个记录中,Field_2 为 Null/Blank。我想找到一种方法来将此 Null 字段解释为全部可能的值(考虑到其他连接)。现在,如果我删除该字段中的值并运行相同的查询,我显然只会看到“A”记录。可以预见的是,在任何一个方向上使其成为外连接都不会给我想要的结果。

我想,另一种思考方式是,我希望它更像一个具有“and”和“or”逻辑的过滤器。这在 Access 中可行/容易做到吗?我最好尝试使用 Excel 中的高级过滤器来做到这一点吗?

这个例子显然是简化的:在我的行业中,情况可能要复杂得多。高级筛选器对于像这样的小事情来说效果很好,但我的“不完整数据”表(此处由 Table_2 表示)可能有数万条记录,而我需要用来扩展它的“完整”数据集有数十万条记录(至少如果我要提取一个将所有突出数据放入表格格式的查询)。

如果这里有人曾经遇到过这个问题并且有现成的解决方案,我会很高兴。我感谢所有帮助。

答案1

您需要编辑您的加入,大概是这样的:

SELECT Table1.*
FROM Table1 
INNER JOIN Table2 
ON Table2.Field_1 = Table1.Field_1
AND Table2.Field_2 = Table1.Field_2

像这样:

SELECT Table1.*
FROM Table1 
INNER JOIN Table2 
ON Table2.Field_1 = Table1.Field_1
AND IIF(Table2.Field_2 IS NULL,Table1.Field_2,Table2.Field_2) = Table1.Field_2

如果我说的不完全正确,请原谅。我认为您不能COALESCE在 Access 中使用,但我相信应该使用IIFAccess。不幸的是,我已经很多年没有使用过 Access 了。

无论如何,原则是您需要编辑连接以表示“如果表 2 中的字段 2 为空,则使用表 1 中的字段 2 代替它”。这具有匹配表 1 中每一行的效果。

相关内容