如何基于hire_date与sysdate的年限差判定初级、高级员工的SQL问题
调整后的查询语句
SELECT first_name, TRUNC(MONTHS_BETWEEN(SYSDATE, hire_date) / 12) AS work_years, CASE WHEN TRUNC(MONTHS_BETWEEN(SYSDATE, hire_date) / 12) BETWEEN 0 AND 2 THEN '初级' WHEN TRUNC(MONTHS_BETWEEN(SYSDATE, hire_date) / 12) BETWEEN 3 AND 5 THEN '高级' ELSE '司龄超过5年' END AS rank_level FROM employees;
逻辑说明
- 用
CASE WHEN条件分支匹配司龄和职级规则,你如果不需要展示具体司龄数值,可以直接删除work_years对应的输出字段 - 超过5年的返回值可以根据实际需求修改,如果不需要展示司龄超过5年的员工,可在语句末尾加过滤条件:
WHERE TRUNC(MONTHS_BETWEEN(SYSDATE, hire_date) / 12) <= 5
内容的提问来源于stack exchange,提问作者Tatanmmm
相关产品推荐
相关产品推荐

