2

我想根据下表清楚地问我的问题:

必需的表,Employee_Working_Table:

Employee_Working_Table

表格说明:表格显示员工的每月工作数据(为简单起见,特意显示员工“Alpha”的数据)。Capture_date 仅显示不包括周末和节假日的工作日。对于每个 Capture_date,如果planned_time_off = 1,则 Days_worked = 0,反之亦然。

要解决的问题:我打算生成 MTD_Days_Worked,如最后一列所示。即 MTD_Days_worked 应该在每个月后重置

代码:我试过下面的代码:

Select Capture_date, Month_end_date, Employee, Planned_time_off, Days_worked
       ,sum(Days_worked) over(PARTITION BY Employee order by Capture_DATE,MONTH_END_DATE) MTD_days_worked

来自 Employee_Working_table,其中 Employee = 'Alpha'

我得到以下结果:

当前结果

如您所见,以红色突出显示,MTD_Days_Worked 在月末过去后不会重置。

如果有人可以指导我如何实现这一目标,我将不胜感激。

提前致谢

4

1 回答 1

0

将 包含MONTH_END_DATE在窗口函数的分区标准中,而不是排序标准中。

SUM(Days_worked) OVER (PARTITION BY Employee, MONTH_END_DATE ORDER BY Capture_DATE) AS MTD_days_worked

这将导致在 Employee/MONTH_END_DATE 组合中的每个休息时间重置排序。

于 2020-05-12T18:33:21.150 回答