我希望有人可以帮忙。我已经看到了解决这个问题部分的解决方案,但是还没有能够将它们全部加在一起以提取我需要的数据。
我有一张包含时间表条目的表格,每行包含一名员工,交易日期,项目代码以及针对它的小时数。
示例:
Employee, Date, Code, Hours
00001, 2016-08-01, FunProject1, 6.0
00001, 2016-08-01, FunProject2, 2.0
00045, 2016-08-01, FunProject5, 8.0
00086, 2016-08-01, FunProject1, 8.0
我还有一张包含标准假期/假期的表格。
HolidayDate, HolidayName
2016-08-30, SomeoneDiedDay
2016-09-01, SomeoneWasBornDay
我想要做的是创建针对特定代码的小时数的报告,并将日期分组在一起,创建使用该代码的开始日期和结束日期,然后是针对特定代码的总小时数它(假设8小时计为1天)。
Employee ID, Code, Start Date, End Date, Total Hours, Total Days
00001, FunProject1, 2016-08-01, 2016-08-15, 88, 11
00086, FunProject1, 2016-08-01, 2016-08-01, 8, 1
结果应忽略周末(从当前日期前的-365天开始)和现有表格中的任何假期/休假。
我在下面有一半:
SELECT Employee,
dateadd(d, - row_number() over (partition by Employee order by Date), Date) as StartDate, Date, SUM(Hrs)AS TotalHours
FROM HrsDetail
WHERE (Code = 'FunProject1' AND DATEPART(YYYY, Date) = '2017' AND (TotalHours != '0.00'))
GROUP BY Employee, Date
(此代码不包括整年,但我想打破这一点,以了解查询正在执行的操作的每个部分,并首先解决分组问题)。我现在如何分组日期以排除假期表和周末?
欢迎任何建议或指示!