繁体   English   中英

访问SQL IIF语句无法正确评估

[英]Access SQL IIF statement not evaluating correctly

我有一个使用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_DaysContract_Health应为"Overdue"否则应为"On Track"

如您所见,结果不一致。 有一件事我做通知是Target_Days (结果DSUM )左对齐,如文本字段,而不是右对齐的数字。 我一定在俯视

谢谢你的帮助。

我使用VAL()函数将我认为是数字的数字转换为实际数字,并且可以正常工作。

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

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

在比较之前,请尝试使用此表达式将文本(此处为Target_Days字段的Target_Days )转换为数字:

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

有关VAL功能的详细信息,请参见:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM