MS Access с использованием Access SQL - нулевая функция - PullRequest
0 голосов
/ 17 февраля 2019

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

У меня есть четыре разных отчета.Все имеют номера заказа в нем.Заполнение номера заказа в отчете A, где номер заказа совпадает в отчете B, C & D в отдельных столбцах для каждого отчета.Так, например, где номера заказов из отчета B совпадают в отчете A, затем заполняют номер заказа, в противном случае ничего (я не знаю, означает ли это, что он пустой или Нулевой, где у него нет соответствующего номера заказа) Хорошо, теперь после заполнения каждогоиз трех столбцов в отчете A. Я хочу добавить запрос, который просматривает каждый столбец в отчете A с помощью функции Null и где он находит порядковый номер в любом из столбцов, тогда он говорит «Либо», если все столбцы являются «Пусто / пусто ", затем скажите" Нет ".

Я не кодер. Поэтому, если вы отвечаете, а затем запрашиваете, пожалуйста, напишите мне точный 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 ]

0 голосов
/ 17 февраля 2019

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

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

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