sql - FIFO - Leave In Lieu 与 Subsitute leave 有效性检查
问题描述
这是关于休假(替代)休假,当一个人在假期工作时,可以享受 1 天或 0.5 天的休假。
假期工作的有效期只允许在工作日期后的 3 个月内提出索赔。
假设一个人 A 在假期工作,如下所示:
- 2018-01-27 - 1 天(必须清除 2018-01-27 至 2018-04-27 之间的假期,否则被烧毁)
- 2018-01-28 - 1 天(必须清除 2018-01-28 至 2018-04-28 之间的假期,否则被烧毁)
- 2018-02-03 - 1 天(必须清除 2018-02-03 到 2018-05-03 之间的假期,否则被烧毁)
A 人正在代休:
- 2018-02-21 - 1天
- 2018-02-27 - 0.5天
- 2018-03-13 - 1天
方法:
- 2018-02-21 使用 1 天,将从 2018-01-27 开始 => 0 余额
- 2018-02-27 需要 0.5 天,将从 2018-01-28 开始 => 0.5 余额
- 2018-03-13 取 1 天,将从 2018-01-28 开始 0.5 天 => 0 余额;
- 2018-03-13 还剩 0.5 天,将抵消 2018-02-03 0.5 天 => 0.5 余额
输出应该是
Work Date | Taken Date | Credit | Balance
2018-01-27 | 2018-02-21 | 1 | 0
2018-01-28 | 2018-02-27 | 0.5 | 0
2018-01-28 | 2018-03-13 | 0.5 | 0
2018-02-03 | 2018-03-13 | 0.5 | 0.5
除了使用 while...loop 方法之外,我如何创建查询?如果我有大量数据,while .. 循环会导致性能问题。
请指教。
问候, 米歇尔
解决方案
推荐阅读
- javascript - Check if object has all the keys with value as empty array
- java - 通过设置较低的新一代大小来控制进程的常驻内存是个坏主意吗?
- sorting - QSortFilterProxyModel 何时调用排序
- php - PHP:为什么不从日期中减去年份?
- java - 无法锁定 Java 编译缓存,因为它已被此进程锁定
- javascript - 如何在Javascript中的类方法内部的函数中使用它
- flutter - Flutter 应用程序未运行
- google-analytics - 页面查看事件、谷歌标签管理器或应用程序的 404 错误?
- bash - 引用命令替换的正确方法
- java - 将 SpringBoot 2.1.4.Relase 升级到 2.5.0 给出 NoClassDefFoundError