【发布时间】:2019-06-08 23:58:32
【问题描述】:
我的 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 的结果)像文本字段一样左对齐,而不是数字右对齐。我一定是忽略了什么。
感谢您的帮助。
【问题讨论】:
-
良好并仔细观察????因此,您应该在比较之前将文本值转换为数字。否则按字母比较(字母对字母)顺序 4 1、5 > 3,依此类推。
-
我仍然想知道为什么 DSUM 没有返回数字?我想我假设“SUM”是一个数值而不是一个字母字符。