У меня есть эта существующая схема, где таблица расписания выглядит так (очень упрощена).Продолжить последнее значение за временной интервал
CREATE TABLE schedule (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(45),
start_date date,
availability int(3),
PRIMARY KEY (id)
);
Для каждого человека указывается дата начала и процент от времени работы, затраченного на этот проект. Этот процент доступности неявно продолжает до тех пор, пока не будет указано более новое значение. Например, возьмем проект, который длится от 2012-02-27 до 2012-03-02:
id | name | start_date | availability
-------------------------------------
1 | Tom | 2012-02-27 | 100
2 | Tom | 2012-02-29 | 50
3 | Ben | 2012-03-01 | 80
Так Том начинается февраля 27nd, полный рабочий день, до февраля, 29, из которого на него» будет доступно только с 50% его рабочего времени. Бен только начинается 1 марта и только с 80% его времени.
Теперь цель состоит в том, чтобы «нормализовать» эти скудные данные, так что есть результат строка для каждого человека за каждый день с наличием исходя из последнего указанного дня:
name | start_date | availability
--------------------------------
Tom | 2012-02-27 | 100
Tom | 2012-02-28 | 100
Tom | 2012-02-29 | 50
Tom | 2012-03-01 | 50
Tom | 2012-03-02 | 50
Ben | 2012-02-27 | 0
Ben | 2012-02-28 | 0
Ben | 2012-02-29 | 0
Ben | 2012-03-01 | 80
Ben | 2012-03-02 | 80
Think диаграмма, показывающая доступности каждого человека с течением времени или вычисления значений «ресурса» в диаграмме выгорания. Я могу легко сделать это с помощью процедурного кода на уровне приложения, но предпочел бы более удобное и быстрое решение.
Going процедурной может быть более в зависимости от того, как используются данные, поскольку для отсутствующих дат нет строк. –
В ваших исходных данных я не вижу дату 2012-03-02 в любом месте. Откуда это происходит, как определяется окончание проекта? –