如何在请求(SQL)中从工作日计算中排除假期

时间:2019-05-22 15:02:17

标签: sql vba ms-access request access-vba

首先,我想精确地说我是一个初学者/自学者,在发布此代码之前尝试了许多代码,谢谢您的考虑。

我在MS Access中有一个请求,该请求使用VBA中定义的函数“ Ouvrables”来计算日期之间的工作日(SQL)。

我还有一个表格“假期”,其中列出了假期/特定工作日的清单。

我希望将此表包括在我的SQL计算中,并将这些假期从特定时期的工作日计算中排除。

示例:在5月中,有3个假期,分别是1号,8号和30号(假期表上的3行) 在这种情况下,我想使用我的工作日计算:23个工作日-3个假期= 20个工作日

这是我的请求SQL代码:

SELECT Z.Planning_Consultants.ID_Consultant, Sum(IIf([Activité]="(2) Interstaff",Ouvrables([maxBegin],[minEnd])*Planning_Consultants.Time_Allocated,0)) AS NonBillable, Sum(IIf([Activité]="(1) Mission",Ouvrables([maxBegin],[minEnd])*Planning_Consultants.Time_Allocated,0)) AS Billable, Sum(IIf([Activité]="(3) Congés/Arrêt",Ouvrables([maxBegin],[minEnd])*Planning_Consultants.Time_Allocated,0)) AS Absent, Billable/(Billable+NonBillable-Absent) AS Urate, Consultants.Nom_de_famille


FROM (SELECT Planning_Consultants.Time_Allocated, Planning_Consultants.Activité, Planning_Consultants.Date_début, Planning_Consultants.Date_fin, Planning_Consultants.ID_Consultant, (IIf(Date_début>[Saisir date début],Date_début,[Saisir date début])) AS maxBegin, (IIf(Date_fin<[Saisir date fin],Date_fin,[Saisir date fin])) AS minEnd, DateDiff("d",maxBegin,minEnd)+1 AS theDiff, Consultants.Nom_de_famille FROM Consultants RIGHT JOIN Planning_Consultants ON Consultants.[Cons_ID] = Planning_Consultants.[ID_Consultant] WHERE (((Planning_Consultants.Date_début)<=[Saisir date fin]) AND ((Planning_Consultants.Date_fin)>=[Saisir date début])))  AS Z INNER JOIN Consultants ON Z.ID_Consultant = Consultants.Cons_ID

GROUP BY Z.Planning_Consultants.ID_Consultant, Consultants.Nom_de_famille;

预期结果: 在整个期间:非计费/计费= 23-3 = 20 要么 从01/05到10/05非计费= 8-2,从11/05到31/05计费= 15-1

0 个答案:

没有答案