在访问中使用Null函数。
我有四个不同的报告。所有都有订单号。在报告A中填充订单号,其中订单号在报告B,C和D中与每个报告的单独列匹配。所以例如如果报表B中的报表编号与报表A中的匹配,则填充该订单编号,否则不填任何内容(我不知道这是空白还是空(如果没有匹配的订单编号))现在在填充三个中的每一个之后报告A中的列。 我想添加一个查询,该查询使用Null函数查看报表A中的每一列,并在其中找到任何列的订单号,然后如果所有列均为“ Null / Blank”,则说“ Either”,然后说“ None” “
我不是编码员。因此,如果您答复然后要求,请给我写一个确切的SQL,我可以通过更改报告名称来使用。
SELECT
[04_Match to Pending Consolidation].*,
IIf(IsNull([Matched_Closed_Not_Invoiced_Report],0) + IsNull([Matched_Shipped_Not_Invoiced_report],0)+IsNull([Matched_Pending_Consolidation_Report],0),"NONE","EITHER REPORT") AS Validation
FROM
[04_Match to Pending Consolidation];
我希望通过此查询在第四列中选择“是”或“无”。
答案 0 :(得分:0)
我想它可以简化为:
SELECT
*,
IIf(([Matched_Closed_Not_Invoiced_Report] + [Matched_Shipped_Not_Invoiced_report] + [Matched_Pending_Consolidation_Report]) Is Null, "NONE", "EITHER") AS Validation
FROM
[04_Match to Pending Consolidation];
答案 1 :(得分:0)
可以通过多种方式编写表达式以达到相同的结果。如果给定表达式为空,则与当前代码最相似的方法可能是使用Nz
函数返回0
,例如:
SELECT
t.*,
IIf
(
(
Nz(t.[Matched_Closed_Not_Invoiced_Report], 0) +
Nz(t.[Matched_Shipped_Not_Invoiced_report], 0) +
Nz(t.[Matched_Pending_Consolidation_Report], 0)
) = 0,
"NONE",
"EITHER REPORT"
) AS Validation
FROM
[04_Match to Pending Consolidation] t;
这当然假定每个有问题的字段在不为null时都具有一个数值。
另一种可能的方法是将布尔逻辑与Is Null
运算符配合使用,例如:
SELECT
t.*,
IIf
(
t.[Matched_Closed_Not_Invoiced_Report] Is Null And
t.[Matched_Shipped_Not_Invoiced_report] Is Null And
t.[Matched_Pending_Consolidation_Report] Is Null,
"NONE",
"EITHER REPORT"
) AS Validation
FROM
[04_Match to Pending Consolidation] t;