Учитывая эту таблицу:SQL Вопрос: Как DATEDIFF в истекшие дни для каждой записи в группе
Как я могу получить DATEDIFF в дни между каждой status_date для каждой группы ID_NUMBER? Другими словами, мне нужно найти количество прошедших дней для каждого статуса, предоставленного ID_Number.
Некоторые вещи, чтобы знать:
- Все ID_NUMBER будет иметь received_date, которая должна быть самая ранняя дата для каждого ID_NUMBER (но приложение не обеспечивает)
- Для каждого ID_NUMBER будет статус с соответствующий status_date, который является датой, когда ID_Number был присвоен этот конкретный статус.
- В столбце состояния не всегда обязательно идти в том же порядке, каждый раз, когда (приложение не навязывает)
- Все ID_NUMBER будет иметь closed_date, которая должна быть дата последней (но приложение не обеспечивает)
Образец вывода: Итак, для ID_Number 2001 первая дата (полученная_дата) - 2009-05-02, а следующая дата, с которой вы сталкиваетесь, имеет статус «open» и является 2009-05-02, поэтому прошедшие дни равны 0 . Переход на следующую встреченную дату - 2009-05-10 со статусом «инвестировать», а прошедшие дни - 8 с предыдущей даты. Следующая встречающая дата - 2009-07-11, и прошедшие дни - 62, отсчитываемые от предыдущей даты.
Edited добавить:
Можно ли иметь в прошедшие дни в конечном итоге в качестве столбца этой таблицы/представления? я забыл добавить, что это SQL Server 2000.
Я добавил все столбцы в свой ответ, чтобы воспроизвести исходную таблицу с новым столбцом дней. Он равен нулю, когда нет значения closed_date. –