我想根据下表清楚地问我的问题:
必需表,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不会重置。
如果有人可以指导我如何实现这一目标,我将不胜感激。
提前感谢
将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组合中的每个休息时间重新设置顺序。