sql - 将 IIF 语句与 DateDiff 一起使用,True 不起作用
问题描述
(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 的新手。
解决方案
自从我上次使用 ms-access 以来,它已经永远存在了,但我认为问题出在这部分:[Date Retired/Left] = NULL
.
在我知道的每个数据库中,您无法将值与NULL
- 结果将始终为false
or 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]