как найти разницу дат в часах между двумя записями с ближайшим значением datetime и его необходимо сравнить в одной группе

#sql #sql-server #sql-server-2008 #datediff

#sql #sql-сервер #sql-server-2008 #datediff

Вопрос:

Как найти разницу дат в часах между двумя записями с ближайшим значением datetime, и оно должно сравниваться в одной группе?

Пример данных следующим образом:

 Select * from tblGroup
  
Group FinishedDatetime
1 03-01-2009 00:00
1 13-01-2009 22:00
1 08-01-2009 03:00
2 01-01-2009 10:00
2 13-01-2009 20:00
2 10:01-2009 10:00
3 27-10-2008 00:00
3 29-10-2008 00:00

Ожидаемый результат :

Группа завершила работу в часах
1 03-01-2009 00:00 123 
1 13-01-2009 22:00 139
1 08-01-2009 03:00 117
2 01-01-2009 10:00 216
2 13-01-2009 20:00 82
2 10:01-2009 10:00 82
3 27-10-2008 00:00 48
3 29-10-2008 00:00 48

Комментарии:

1. mysql или sqlserver вы отметили обоими? Также, каким будет ваш ожидаемый результат от данного набора данных?

Ответ №1:

Попробуйте это:

 Select t1.[Group], DATEDIFF(HOUR, z.FinishedDatetime, t1.FinishedDatetime)
FROM tblGroup t1
OUTER APPLY(SELECT TOP 1 *
            FROM tblGroup t2 
            WHERE t2.[Group] = t1.[Group] AND t2.FinishedDatetime<t1.FinishedDatetime
            ORDER BY FinishedDatetime DESC)z
  

Комментарии:

1. после выполнения вашего запроса я получил ошибку следующего содержания: «Не удалось привязать составной идентификатор t2.FinishedDatetime»

2. @Kapil. Я меняю свой запрос. Попробуйте еще раз.