У меня есть запрос 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
) выровнен по левому краю как текстовое поле, а не по правому краю как число.Я должен что-то упускать из виду.
Спасибо за вашу помощь.