我收到下表,但存在以下问题:
从数据集中创建一个渐变维度类型 2。EMPLOYEE 表有每个员工的每日记录。类型 2 - 将具有有效数据和到期日期。
员工ID | 日期 | 姓名 | 经理编号 |
---|---|---|---|
123 | 1-3月 | 约翰·史密斯 | 1 |
123 | 3月2日 | 约翰·史密斯 | 1 |
123 | 3-3月 | 约翰·史密斯 | 2 |
123 | 3月4日 | 约翰·史密斯 | 3 |
123 | 3月5日 | 约翰·史密斯 | 3 |
我相信我的目标表应该是这样的:
员工ID | 姓名 | 经理编号 | 生效日期 | 截止日期 |
---|---|---|---|---|
123 | 约翰·史密斯 | 1 | 1-3月 | 3-3月 |
123 | 约翰·史密斯 | 2 | 3-3月 | 3月4日 |
123 | 约翰·史密斯 | 3 | 3月4日 | 无效的 |
我尝试了以下查询:
SELECT employee_id, name, manager_id,
CASE
WHEN LAG(manager_id) OVER() != manager_id THEN e.date
WHEN e.date = FIRST_VALUE(e.date) OVER() THEN e.date
ELSE NULL
END as "Effective Date",
CASE
WHEN LEAD(manager_id) OVER() != manager_id THEN LEAD(e.date) OVER()
ELSE NULL
END as "Expiration Date"
FROM employee e
我的结果表如下:
员工ID | 姓名 | 经理编号 | 生效日期 | 截止日期 |
---|---|---|---|---|
123 | 约翰·史密斯 | 1 | 1-3月 | 无效的 |
123 | 约翰·史密斯 | 1 | 无效的 | 3-3月 |
123 | 约翰·史密斯 | 2 | 3-3月 | 3月4日 |
123 | 约翰·史密斯 | 3 | 3月4日 | 无效的 |
123 | 约翰·史密斯 | 3 | 无效的 | 无效的 |
有谁知道我可以改变我的查询以实现我的目标表,基于我迄今为止所取得的成就?我不知何故只需要产生 3 个经理 ID,但 distinct 不起作用。此外,我需要找到一种方法来组合每个经理 ID 的生效日期和到期日期。任何帮助都将不胜感激。