Access SQL IIF оператор не оценивается правильно - PullRequest
0 голосов
/ 06 июня 2019

У меня есть запрос Access SQL с использованием оператора iif, который оценивается неправильно.Я не вижу проблемы с оператором iif.

Следующий приведенный ниже код SQL возвращает таблицу под ним.

SELECT PR, 
    G21_Start AS Genesis_Date, 
    SWITCH(G21_comp IS NULL, 2.1,
               G22_comp IS NULL, 2.2,
               G31_comp IS NULL, 3.1,
               G32_comp IS NULL, 3.2,
               G33_comp IS NULL, 3.3,
               G4_comp IS NULL, 4,
               1=1, 0) AS Current_Gate, 
    DSUM ("Goal", "qry_Gate_Status", "Gate <= " & Current_Gate & " AND PR 
    = '" & PR & "'") AS Target_Days, 
   (DATE() - G21_Start) AS Elapsed, 
   IIF (Elapsed > Target_Days, "Overdue", "On Track") AS Contract_Health
FROM qry_Gate_Status_Extended;

Результат:

PR     Genesis_Date  Current_Gate  Target_Days  Elapsed  Contract_Health
AA         3/8/2019           2.1  45                90  Overdue
AB         1/1/2019           3.1  73               156  On Track
BB         5/1/2019           2.2  59                36  On Track
BC        9/19/2018           2.1  45               260  On Track

Если Elapsed больше Target_Days, то Contract_Health должно быть "Overdue" иначе это должно быть "On Track".

Как видите, результаты не соответствуют друг другу.Одна вещь, которую я замечаю, это то, что Target_Days (результат DSUM) выровнен по левому краю как текстовое поле, а не по правому краю как число.Я должен что-то упускать из виду.

Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Попробуйте это выражение для преобразования текста (здесь: значение поля Target_Days) в число перед сравнением:

IIF ( Elapsed > VAL(Target_Days), "Overdue", "On Track")

Подробнее о функции VAL см .:

1 голос
/ 06 июня 2019

Я использовал функцию VAL (), чтобы преобразовать то, что я считал числом, в фактическое число, и это сработало.

VAL(DSUM ("Goal", "qry_Gate_Status", "Gate <= " & Current_Gate & " AND PR 
= '" & PR & "'")) AS Target_Days

Спасибо за совет !!!Ребята, вы молодцы !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...