2015-04-29 2 views
-1

Я исследовал некоторые таблицы календаря, которые, как я думал, помогут мне выполнить то, что мне нужно, но, похоже, ничего не могут найти. Мне нужен месяц сравнения за рабочий день. Скажем сегодня, 4/29/2015. мы просто назовем его рабочим днем ​​20. Какая дата в предыдущем месяце сравнивается с рабочим днем ​​20 марта. Любые мысли о подходе? Всем спасибо.SQL Business Day сравнение двух дат

+3

Создайте карту рабочего дня и даты календаря, то есть таблицу с двумя столбцами Business_Day и Calendar_Date – bjan

+1

@ комментарий bjan находится на месте. Это скорее дело бизнес-аналитики, чем нечто процедурное. Фактор в таких вещах, как праздники, не являющиеся рабочими днями, особые праздники, такие как «День основателя - мы закрыты» и т. Д., И вы видите, что для этого вам нужна таблица. –

+0

Итак, мне нужно вручную учитывать каждую соответствующую дату? – aaron

ответ

0

Дата или календарь - вот что вы ищете. Я не уверен, где бы вы не могли «найти что-нибудь». Таблицы дат могут быть индивидуальными для любых потребностей вашего бизнеса. Некоторым нужно только несколько дополнительных полей, некоторые используют много дополнительных полей.

Вам также нужно будет учитывать любые праздники. День памяти считается рабочим днем? Вы открылись в день MLK? Праздники варьируются от страны к стране, от компании к компании, вы называете ее. Я определенно получаю некоторые полномочия, которые будут задействованы, чтобы помочь вам определить, что составляет «рабочий день».

Вот несколько статей, которые доставят вас в путь, к сожалению, никто из нас не сможет просто построить его для вас, поскольку вам нужно обсудить это с заинтересованными сторонами в бизнесе.

http://www.experts-exchange.com/articles/12267/Build-your-own-SQL-calendar-table-to-perform-complex-date-expressions.html

http://www.sqlserver.info/database-design/how-to-create-a-date-table/

+0

Пожалуйста, не связывайтесь с сайтами, такими как обмен экспертами, у которых есть стена для входа –

+0

Мы закрыты на день MLK. – aaron

+0

Не знаете, где вы получаете стенд для входа, подходит для меня (и нет, я не зашел на сайт и не зарегистрировался на нем) –

0

Я только что закончил свое решение и хотел бы поделиться. То, что я хотел бы сделать, - это создать таблицу «Календарь» и обозначить «рабочие дни». Это исключало выходные и праздничные дни. После того, как эта таблица была завершена, я использовал функцию Rank и оценивал каждый день по разделу [Месяц], [Год] и Упорядочен по дням. Тогда просто создал поле на столе календарь и Обновил поле с

UPDATE Auxiliary.Calendar 
SET BusDayOfMonth = b.NewRanking 
FROM Auxiliary.Calendar a INNER JOIN 
     (SELECT date, RANK() OVER(PARTITION BY Month, Year ORDER BY Day ASC) AS NewRanking FROM Auxiliary.Calendar WHERE KindOfDay = 'BANKDAY') b ON a.date = b.date 

Теперь у меня есть поле, которое показывает мне, какой рабочий день ID каждая дата в месяц на любую дату. Спасибо всем за ваши предложения.

Смежные вопросы