根据SQL Server中的“捕获日期”查找“ MTD_Days_Worked”的总数

问题描述 投票:1回答:1

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

必需表,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'

我得到以下结果:

Current_results

正如您看到的以红色突出显示的那样,在经过月底后,MTD_Days_Worked不会重置。

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

提前感谢

sql-server partitioning
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组合中的每个休息时间重新设置顺序。

© www.soinside.com 2019 - 2024. All rights reserved.