sql - 由于雇用/辞职日期而无法找出活跃用户
问题描述
在我Employee
的 SQL Server 表中,我有两个日期时间列:HiringDate
和ResignDate
. 我想Status
在视图中创建一个新列(活动、非活动)。
- 如果 HiringDate 为 NULL 或大于今天 = 不活动
- 如果 HiringDate 处于活动状态但 ResignDate 早于今天,则状态也必须为非活动状态。
我是否必须制作某种嵌套案例才能完成这项工作,我还想知道我是否必须将其转换为日期格式,以便不包括时间部分。
将非常感谢您的帮助。
这是我到目前为止尝试过的,但它不能正常工作......
CASE
WHEN CONVERT(DATE,HiringDate) IS NOT NULL
OR CONVERT(DATE,HiringDate) <= CONVERT(DATE,GETDATE())
THEN
CASE
WHEN CONVERT(DATE,ISNULL(ResignDate, CONVERT(DATE,'2099-12-30'))) <= CONVERT(DATE,GETDATE())
THEN 'Active'
ELSE 'Inactive'
END
ELSE 'Inactive'
END as Status
解决方案
试试下面这个在一个 CASE 表达式中组合逻辑:
CASE
WHEN HiringDate IS NOT NULL
or HiringDate >= GETDATE()
or ResignDate >= GETDATE()
THEN 'Active'
ELSE 'Inactive'
END as Status
您能否尝试以下新逻辑-
CASE
WHEN (
CONVERT(DATE,HiringDate) IS NOT NULL
OR
CONVERT(DATE,HiringDate) <= CONVERT(DATE,GETDATE()
)
AND
CONVERT(DATE,ISNULL(ResignDate, CONVERT(DATE,'2099-12-30')))
<= CONVERT(DATE,GETDATE())
THEN 'Active'
ELSE 'Inactive'
END as EmployeeStatus
推荐阅读
- c - 将 Switch 语句转换为 if/then 和 if/else 语句
- php - 使用 PHP 的 Nginx 重写规则无法正常工作
- c# - 我应该在 EnityFramework Core 中使用什么 DbContext?
- c - 在循环中编写声明
- javascript - 使用 JavaScript 在模态框上实现表单
- php - 作为数组索引的常量数组值在 foreach 中不起作用
- angular - Angular 6:动态表单
- r - 如何证明 R 中图例的多个部分是合理的?
- raspberry-pi - 带有 systemd 的树莓派上的 Python discord bot
- react-native - 如何在本机反应中设置多行标题?