首页 > 解决方案 > 访问 SQL IIF 语句未正确评估

问题描述

我有一个使用iif未正确评估的语句的 Access SQL 查询。我看不出这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)像文本字段一样左对齐,而不是右对齐为数字。我一定是忽略了什么。

谢谢你的帮助。

标签: sqlms-access

解决方案


我使用 VAL() 函数将我认为的数字转换为实际数字并且它有效。

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

谢谢你的提示!!!你们真棒!!!


推荐阅读