(SELECT IIF([Date Retired/Left] = NULL, DateDiff("yyyy", [Date Employed],Now()),
DateDiff("yyyy",[Date Employed],[Date Retired/Left]))
FROM [Employment History]
WHERE [Employment History].EmployeeID = [Training History].EmployeeID)
AS [Time Employed]
这是一个子查询,如果[Date Retired / Left]保留一个日期,则返回正确的值,但是当它没有保留日期,即没有离开或退休时我想收集到期的工作时间。我试图使用Now()命令但无法使其工作,在这些字段中接收空白。
道歉,如果这是一个简单的错误,我是本周第一次尝试SQL的新手。
答案 0 :(得分:2)
自从我上次使用ms-access以来,它一直是永恒的,但我认为问题在于这一部分:[Date Retired/Left] = NULL
。
在我知道的每个数据库中,您都无法将值与NULL
进行比较 - 结果将始终为false
或unknown
。您需要将其更改为[Date Retired/Left] IS NULL
。
所以你的子查询应该是这样的:
(SELECT IIF([Date Retired/Left] IS NULL,
DateDiff("yyyy", [Date Employed], Now()),
DateDiff("yyyy", [Date Employed], [Date Retired/Left])
)
FROM [Employment History]
WHERE [Employment History].EmployeeID = [Training History].EmployeeID)
AS [Time Employed]