Я пытаюсь написать запрос для расчета количества рабочих дней между двумя датами. Я сначала пробовал это в VBA, который работал, но это не очень эффективно.Запрос рабочих дней SQL
У меня есть 2 запроса, первое из них определяет разницу дат между valueDate и cutOffDate; второй подсчитывает количество дат из таблицы праздников/выходных дней, которые падают между valueDate и cutOffDay.
Проблема, с которой я столкнулся, состоит в том, как объединить эти 2 части, чтобы дать возраст предмета (количество рабочих дней между датами).
Мои примеры запросов являются:
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 меньше в любой день из праздничного стола.
блестящий. Спасибо, во-первых, за вашу помощь и, во-вторых, за то, что открыли мне глаза на подзапросы! Я уже определил несколько других мест, где они могли бы мне помочь. Я адаптировал это, чтобы соответствовать моей производственной базе данных, поэтому я не мог быть счастливее. В следующий раз, когда я застрял и поставил вопрос, я обязательно буду рассматривать то, что я прошу более тщательно, чтобы я предоставил как можно больше информации. О, спасибо за ссылки тоже. Это дало мне больше возможностей читать и экспериментировать! – sticks