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