【发布时间】:2013-11-20 08:34:15
【问题描述】:
我正在尝试编写一个查询来计算两个日期之间的工作日数。我第一次在 VBA 中尝试过,效果很好,但是效率不高。
我有 2 个查询,第一个计算出 valueDate 和 cutOffDate 之间的日期差;第二个计算假期/周末表中介于 valueDate 和 cutOffDay 之间的日期数。
我遇到的麻烦是如何结合这两个部分来给出项目年龄(日期之间的工作日数)。
我的查询示例是:
SELECT allOS.SortCode, allOS.NPA, allOS.valueDate, allOS.cutOffDate,
DateDiff("d",[allOS.valueDate],[allOS.cutOffDate]) AS Age
FROM allOS;
和
SELECT Count(Holidays.Holiday) AS NonWorkingDays
FROM Holidays
HAVING (([Holiday]>[#01/01/2013#] And [Holiday]<[#11/06/2013#]));
我需要从第一个查询的年龄中减去第二个查询的结果。
样本输入和输出数据
所有操作系统:
sortCode|npa|valueDate|cutOffDate
111111|99999999|01-11-2013|15-11-2013
222222|77777777|04-11-2013|15-11-2013
333333|88888888|05-11-2013|15-11-2013
444444|66666666|06-11-2013|15-11-2013
555555|44444444|07-11-2013|15-11-2013
666666|33333333|12-11-2013|15-11-2013
777777|55555555|13-11-2013|15-11-2013
888888|11111111|14-11-2013|15-11-2013
999999|22222222|15-11-2013|15-11-2013
节假日:
holiday|reason
02-11-2013|Saturday
03-11-2013|Sunday
08-11-2013|Long Weekend
09-11-2013|Saturday
10-11-2013|Sunday
11-11-2013|Long Weekend
16-11-2013|Saturday
17-11-2013|Sunday`
结果:
sortCode|npa|valueDate|cutOffDate|Age
111111|99999999|01-11-2013|15-11-2013|8
222222|77777777|04-11-2013|15-11-2013|7
333333|88888888|05-11-2013|15-11-2013|6
444444|66666666|06-11-2013|15-11-2013|5
555555|44444444|07-11-2013|15-11-2013|4
666666|33333333|12-11-2013|15-11-2013|3
777777|55555555|13-11-2013|15-11-2013|2
888888|11111111|14-11-2013|15-11-2013|1
999999|22222222|15-11-2013|15-11-2013|0
年龄的结果是 valueDate 和 cutOffDate 之间的差减去假期表中的任何天数。
【问题讨论】:
标签: sql ms-access ms-access-2007