You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选员工最新任务:无进行中任务则取最晚结束日期

员工最新任务筛选方案

针对你的需求,只需调整ROW_NUMBER()的排序逻辑,就能优先选中进行中任务,无进行中任务时再选停止日期最晚的任务,具体SQL如下:

WITH ranked_tasks AS (
    SELECT 
        EMPLOYEE,
        START_DATE,
        STOP_DATE,
        ROW_NUMBER() OVER (
            PARTITION BY EMPLOYEE 
            ORDER BY 
                -- 给进行中任务最高优先级,排在最前面
                CASE WHEN STOP_DATE = '1753-01-01' THEN 0 ELSE 1 END ASC,
                -- 非进行中任务按停止日期倒序,取最晚的
                STOP_DATE DESC
        ) AS rn
    FROM employee_tasks
)
SELECT EMPLOYEE, START_DATE, STOP_DATE
FROM ranked_tasks
WHERE rn = 1;

逻辑说明

  • 用CTE(公共表表达式)给每个员工的任务分组排名:PARTITION BY EMPLOYEE确保仅在单个员工的任务范围内排序
  • 排序规则分两步:
    1. 通过CASE语句把进行中任务(STOP_DATE='1753-01-01')标记为0,其他任务标记为1,升序排序后0会排在最前面,保证有进行中任务时它是该员工的第1条记录
    2. 对于没有进行中任务的员工,直接按STOP_DATE倒序排列,取最晚的那条任务
  • 最后筛选排名为1的记录,就是每个员工的最新任务

内容的提问来源于stack exchange,提问作者dhwu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:27:08