Я бы разработал это с каждым набором ежемесячных прогнозов, обработанным как группа строк. Для поддержки исторических данных добавьте поле «дата создания». Так что-то вроде (это синтаксис T-SQL, я давно отказался от Access):
CREATE TABLE dbo.TaskEstimates
(
DateCreated datetime NOT NULL,
EstimateYearMonth datetime NOT NULL,
HoursRequired decimal NOT NULL,
CONSTRAINT PK_TaskEstimates PRIMARY KEY CLUSTERED
(
DateCreated ASC,
EstimateMonth ASC
)
);
Поле DateCreated
будет, например, одинаковым для всех членов оценочного набора, введенного сегодня. Поле EstimateYearMonth
содержит только год и месяц (день = 1, часть времени = 0: 00: 00.000).
Комбинации агрегатных функций и критериев группировки позволяют получать любую комбинацию данных, которая вам нужна.
В дополнение или вместо поля DateCreated
вы также можете использовать GroupID
, который увеличивается для каждого набора. Таким образом, первый набор all имеет GroupID
== 1, следующий набор == 2 и так далее. Это может быть проще для исторического выбора, если вам задают вопросы с подсчетом запросов вместо вопросов с датированными запросами; например «дайте мне оценки за 3-й цикл» вместо «дайте мне оценки, сделанные в июне».
Кстати, я обычно использую datetime
для всех данных, относящихся к дате и времени, вместо того, чтобы разделять их на год, месяц и т. Д., Поэтому мне нужно только нормализовать несколько критериев выбора, а не возиться с преобразованиями типов для каждой строки .