У меня есть таблица со многими идентификаторами и множеством дат, связанных с каждым идентификатором, и даже несколькими идентификаторами без Дата. Для каждой комбинации идентификатора и даты я хочу выбрать идентификатор, дату и следующую самую большую дату, также связанную с тем же идентификатором, или null в качестве следующей даты, если ее нет.
Пример таблицы:
ID Date
1 5/1/10
1 6/1/10
1 7/1/10
2 6/15/10
3 8/15/10
3 8/15/10
4 4/1/10
4 4/15/10
4
Желаемый результат: Боб 2010-08-03 08:00:00 2010-08-03 12:00:00 4 Боб 03-08-2010, 13:00:00 ...
У меня есть таблица данных, которая выглядит примерно так:
Name StartTime FinishTime Work
Bob 2010-08-03 08:00:00 2010-08-03 12:00:00 4
Bob 2010-08-03 13:00:00 2010-08-03 16:00:00 3
Pete 2010-08-04 08:00:00 2010-08-04 12:00:00 4
Mark 2010-08-04 10:00:00 2010-08-04 12:00:00 2
Ни один из этих диапазонов дат никогда не должен перекрывать полночь.
Я хочу написать SQL, который даст мне следующий результат, учитывая входную дату начала 2010-08-02 и дату окончания 2010-08-05
Date Name TotalWork
2010-08-03 Bob 7
2010-08-03 Pete 3
2010-08-04 Pete 4
2010-08-04 Mark 2
, с которой я мог бы жить, и на самом деле может в конечном итоге потребоваться, чтобы есть дни, не связанные с работой, также должны быть представлены в наборе результатов, возможно, в виде такой строки:
2010-08-05 NULL 0
Я не совсем уверен, как перебирать даты в SQL так же, как и с другими языками .
Чтобы дать этому некоторый контекст, выходные данные этого будут в конечном итоге подключены к элементу управления Stacked Chart .Net.
Может ли кто-нибудь дать мне подсказку, ссылку на учебное пособие или другую помощь? В противном случае я думаю, что буду возиться с этим в течение нескольких дней!
Спасибо!
Джонатан