我需要在标题中建议的每个员工ID缺少快照日期时,在Azure SQL数据库的视图中动态显示行,方法是将每个[员工编号]的[快照日期]用作最小和最大日期。[快照日期]始终是该月的最后一天。
这样做的原因是,在几个月的不活动之后,员工将退出各种应用程序,因此他们的记录从报告中“丢失”。但是,我们希望在系统中最后一次看到他们的最后日期之后的每个快照期间继续报告不活动/已删除的员工。
这就是我的数据目前的样子。
Employee Status后面有很多列,我想将这些列[Example Column]中的数据填充为null。
| 员工编号-快照年-月|快照日期|员工编号|员工状态|示例列|
| --|--|--|--|--|
| 2019 - 09 - 22 2019 - 09 - 09| 2022-12-31 00:00:00.0000000| 999999 |非活动|null|
| 2019 - 09 - 22 2019 - 09 - 09| 2022-11-30 00:00:00.0000000| 999999 |非活动|null|
| 粤ICP备09099999号-1| 2022-10-31 00:00:00.0000000| 999999 |非活动|null|
| 2022 - 09 - 09 -2022-2022-09| 2022-09-30 00:00:00.0000000| 999999 |非活动|null|
| 2019 - 09 - 22| 2022-08-31 00:00:00.0000000| 999999 |非活动|null|
| 2022-07 -2022| 2022-07-31 00:00:00.0000000| 999999 |非活动|null|
| 2019 -06 - 22| 2022-06-30 00:00:00.0000000| 999999 |非活动|null|
| 2019 -05 - 22| 2022-05-31 00:00:00.0000000| 999999 |非活动|null|
| 2022- 04 - 04 -2022-04| 2022-04-30 00:00:00.0000000| 999999 |非活动|null|
我想让它看起来像:
| 员工编号-快照年-月|快照日期|员工编号|员工状态|示例列|
| --|--|--|--|--|
| 粤ICP备09099999号-1| 2023-10-31 00:00:00.0000000| 999999 |非活动|null|
| 2023 - 09 - 09 -2023-2023-09| 2023-09-30 00:00:00.0000000| 999999 |非活动|null|
| 2019 -08 - 29 00:00:00| 2023-08-31 00:00:00.0000000| 999999 |非活动|null|
| 2019 -07 - 23| 2023-07-31 00:00:00.0000000| 999999 |非活动|null|
| 2019 -06 - 23| 2023-06-30 00:00:00.0000000| 999999 |非活动|null|
| 2019 -05 - 23| 2023-05-31 00:00:00.0000000| 999999 |非活动|null|
| 2023- 04 - 04 -2023-04| 2023-04-30 00:00:00.0000000| 999999 |非活动|null|
| 2023 - 03 - 03 -2023-03 -2023-03 - 2023| 2023-03-31 00:00:00.0000000| 999999 |非活动|null|
| 2023 - 02 - 02 -2023-02 -2023-02 - 2023| 2023-02-28 00:00:00.0000000| 999999 |非活动|null|
| 2023 - 01 - 01 - 01 -2023-01 -2023-01 - 2023| 2023-01-31 00:00:00.0000000| 999999 |非活动|null|
| 2019 - 09 - 22 2019 - 09 - 09| 2022-12-31 00:00:00.0000000| 999999 |非活动|null|
| 2019 - 09 - 22 2019 - 09 - 09| 2022-11-30 00:00:00.0000000| 999999 |非活动|null|
| 粤ICP备09099999号-1| 2022-10-31 00:00:00.0000000| 999999 |非活动|null|
| 2022 - 09 - 09 -2022-2022-09| 2022-09-30 00:00:00.0000000| 999999 |非活动|null|
| 2019 - 09 - 22| 2022-08-31 00:00:00.0000000| 999999 |非活动|null|
| 2022-07 -2022| 2022-07-31 00:00:00.0000000| 999999 |非活动|null|
| 2019 -06 - 22| 2022-06-30 00:00:00.0000000| 999999 |非活动|null|
| 2019 -05 - 22| 2022-05-31 00:00:00.0000000| 999999 |非活动|null|
| 2022- 04 - 04 -2022-04| 2022-04-30 00:00:00.0000000| 999999 |非活动|null|
更复杂的是,有些员工的快照日期可以追溯到2017-04年。我只想填充从员工编号存在的最小快照日期开始的数据。
我正在寻找类似[https://stackoverflow.com/questions/70393259/insert-rows-of-dates-missing-for-every-id?newreg= ddf 9 bd 38 c12545 d28 ef 93 cba 3bd 61 d44]的解决方案。但是,我无法使用GENERATE_SERIES,因为我的SQL Server版本不支持它,我无法升级。
有人能帮忙吗?
1条答案
按热度按时间pxyaymoc1#
可以使用数字表模拟此功能。创建一个临时表或包含数字序列的公用表表达式(CTE)。然后使用此数字表为每个员工生成指定范围内的日期
你可以使用下面的代码作为参考
字符串