MS Access с использованием Access SQL - нулевая функция

Использование нулевой функции в доступе.

У меня есть четыре разных отчета. Все имеют номера заказа в нем. Заполнение номера заказа в отчете A, где номер заказа совпадает в отчете B, C & D в отдельных столбцах для каждого отчета. Так, например, где номера заказов из отчета B совпадают в отчете A, затем заполняют номер заказа, в противном случае ничего (я не знаю, означает ли это, что он пустой или Нулевой, где у него нет соответствующего номера заказа) Хорошо, теперь после заполнения каждого из трех столбцов в отчете A. Я хочу добавить запрос, который просматривает каждый столбец в отчете A с помощью функции Null и где он находит порядковый номер в любом из столбцов, тогда он говорит "Либо", если все столбцы являются "Null/Blank"тогда говорите" 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];

Я хочу, чтобы "Либо" или "Нет" в четвертом столбце через этот запрос.

2 ответа

Я думаю, это может быть уменьшено до:

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];

Есть много способов, которыми выражение может быть написано для достижения того же результата. Метод, наиболее похожий на ваш текущий код, может заключаться в использовании 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;

Это, конечно, предполагает, что каждое из рассматриваемых полей содержит числовое значение, когда оно не равно нулю.


Другим возможным методом является использование логической логики с 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;
Другие вопросы по тегам