#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. Я меняю свой запрос. Попробуйте еще раз.