我正在创建sql server视图。我有一个时间管理系统的员工数据,每天打卡上班和下班,如下表所示,这只是一个例子,有100个员工记录。
DATE USERID CLOCK
--------------------------------
2020-02-25 1234 08:00:00
2020-02-25 1234 17:00:00
有一个部门和成本代码表,但它只保存当前部门和成本代码,没有历史记录。有一个如下所示的审计表,changedate是datetime格式的,还记录了进行更改的时间。
CHANGEDATE USERID CHANGETYPE NEWVALUE
-------------------------------------------
2019-01-01 hh:mm:ss 1234 DEPARTMENT Warehouse
2019-01-01 hh:mm:ss 1234 DEPARTMENT Stores
2019-05-01 hh:mm:ss 1234 COSTCODE Store1
2020-02-25 hh:mm:ss 1234 DEPARTMENT Shipping
2020-02-25 hh:mm:ss 1234 COSTCODE Dock1
我需要能够做的是将时间的部门和成本代码分配给打卡入/出数据,如下所示,这样我就可以看到在打卡日期分配给他们的部门和成本代码。使用上述时钟,员工1234在2019年5月1日至2020年2月25日期间分配的每个时钟都是department=stores和cost code=store1,2020年2月25日之前和之后的每个时钟都是department=shipping和cost code=dock1,以此类推。
DATE USERID CLOCK DEPARTMENT COSTCODE
-----------------------------------------------------
2020-02-24 1234 09:00:00 Stores Store1
2020-02-24 1234 18:00:00 Stores Store1
2020-02-25 1234 08:00:00 Shipping Dock1
2020-02-25 1234 17:00:00 Shipping Dock1
有人能帮忙吗?提前谢谢。
1条答案
按热度按时间nhjlsmyf1#
我将构建一个中间视图或cte,其中每个属性的开始日期和结束日期都有一个干净的历史记录,然后使用日期上的范围条件将其与时钟数据连接起来: