在T-SQL中构建HR数据集,需要一个行开始日期列和一个行结束日期列

问题描述

我有HR数据集问题。对于职位,我有职位详细信息,例如类别,类型等。 这些详细信息随时间变化并且彼此独立,从而产生以下数据集:

Position    StartDate      EndDate
1           '2020-01-01'   '3000-01-01'

Position    Type        StartDate     EndDate
1           'Part-time' '2020-01-01'  '2020-07-31'
1           'Full-time' '2020-08-01'  '2020-08-30'
1           'Part-time' '2020-09-01'  '3000-01-01

Position    Category      StartDate     EndDate
1           'Agency'      '2020-01-01'  '2020-06-30'
1           'Employee'    '2020-07-01'  '2020-08-30'
1           'Contractor'  '2020-09-01'  '3000-01-01

因此,我想获得一个数据集,例如:

Position   Type         Category      StartDate      EndDate
1          'Part-time'  'Agency'      '2020-01-01'   '2020-06-30'
1          'Part-time'  'Employee'    '2020-07-01'   '2020-07-31'
1          'Full-time'  'Employee'    '2020-08-01'   '2020-08-30'
1          'Part-time'  'Contractor'  '2020-09-01'   '3000-01-01'

这样,当按日期过滤时,它将带回该日期该位置的情况。对于“ 2020-07-05”上的示例,该职位将显示为兼职员工。

到目前为止,我研究的方法包括用于创建StartDate和EndDate字段的CASE语句

并创建数据集的并集,然后运行ROW_NUMBER()OVER(位置按OVER BY StartDate,EndDate)以尝试在连接这些表时滤除错误的行。

编辑:抱歉,我应该添加,这是问题的最小示例。我正在看的示例将有6-12列。因此,该解决方案将需要可扩展。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)