sql - 在 Hive 或 SQL Server 中将日期拆分为多个日期范围
问题描述
我想将以下日期转换为不同的日期范围,这里 emp 从 2019-07-25 到 2099-02-14 属于钦奈位置,但在这两者之间,emp 在 2020-02-15 和 2020-02 之间从 DEL 工作-23。
所以我想将以上日期转换为以下日期范围
解决方案
要处理多级嵌套,您可以取消透视数据并
with e as (
-- unpivot the dates
select employeeid, fromdate as dte,
placename, placecode
from t
union all
select employeeid, enddate, null, null
from t
),
e2 as (
-- impute the intermediate placenames
select e.*,
max(placename) over (partition by employeeid, grp) as imputed_placename
from (select e.*,
count(placename) over (partition by employeeid order by dte) as grp
from e
) e
)
select employeeid, fromdate,
dateadd(day, -1, lead(fromdate) over (partition by employeeid order by dte)) as enddate,
placename, placecode
from e1;
推荐阅读
- javascript - 如何在 1.12.4 版本中使用 jquery 添加日期选择器?
- c++ - 如何在 C++ 中从字符串中提取数据
- angular - AngularFire 捕获后台通知
- react-native - react-native-video 只播放视频的前几秒
- node.js - Webpack 与 NPM 脚本
- python - 使用常见的 y 范围 Python 在同一图中创建 2 个线图
- python - Python 抓取:错误 54“对等方重置连接”
- bash - Yubikey 不接受密码
- android - 如何将参数传递给包含Android中链接的字符串资源
- java - 复制 ArrayList 时遇到问题