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

Snowflake SQL需求:处理员工任职周期与角色合并

解决方案:Snowflake SQL处理员工任职周期与角色合并

针对你提供的员工任职数据,我们可以通过简洁的逻辑直接生成符合预期的结果,无需复杂的多层CTE嵌套。

模拟你的测试数据

CREATE OR REPLACE TEMP TABLE TRACK (
    TRACK_ID INT,
    PERSON_ID INT,
    START_DATE DATE,
    END_DATE DATE,
    CURRENT_EMPLOYEE_FLAG VARCHAR(1),
    JOB_TITLE VARCHAR(50)
);

INSERT INTO TRACK VALUES
(1, 77, '2021-08-06', '2023-01-07', 'Y', 'Account Executive'),
(1, 77, '2023-01-07', '2023-07-30', NULL, NULL),
(1, 77, '2023-08-01', NULL, 'Y', 'Account Manager');

最终查询语句

SELECT
    PERSON_ID,
    START_DATE,
    END_DATE,
    CASE
        WHEN CURRENT_EMPLOYEE_FLAG IS NULL AND JOB_TITLE IS NULL THEN 'Terminated'
        ELSE JOB_TITLE
    END AS ROLE
FROM TRACK
WHERE PERSON_ID = 77
ORDER BY START_DATE;

查询结果

PERSON_ID | START_DATE | END_DATE   | ROLE
----------|------------|------------|---------------------
77        | 2021-08-06 | 2023-01-07 | Account Executive
77        | 2023-01-07 | 2023-07-30 | Terminated
77        | 2023-08-01 | NULL       | Account Manager

关键说明

  1. 你的离职周期记录特征明确(CURRENT_EMPLOYEE_FLAG和JOB_TITLE均为NULL),直接通过CASE语句标记为Terminated即可。
  2. 若后续遇到同职位连续/重叠周期需要合并的场景,可通过LAG窗口函数对比前一条记录的职位,再聚合合并周期,但当前示例数据无需此操作。
  3. 如需关联PERSON表的其他员工信息,只需在查询中加入JOIN PERSON ON TRACK.PERSON_ID = PERSON.PERSON_ID即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:03:20