Ребята, у меня есть таблица со столбцом с именем time. Он фиксирует время записи каждой записи в базу данных. Я хочу запросить и вернуть другой столбец, отображающий продолжительность между одной записью и записью перед ней. Например, если я храню запись для Джона сегодня в 12:00, а затем Али в 13:10, я хочу еще один столбец, который будет показывать 01:10:00 (т. Е. HH: MM: SS).Расчет времени между записями в sql
Я понимаю, что могу запросить каждый номер столбца следующим образом.
SELECT ROW_NUMBER() OVER (ORDER BY [followuptime]) from [dbo].[FollowUp] .
я хотел запросить максимальное число строк AS следующим образом, но это не удается, и возвращаемая ошибка «оконная ....»
SELECT MAX(ROW_NUMBER() OVER (ORDER BY [followuptime])) from [dbo].[FollowUp] .
Я хотел использовать DATEDIFF(interval,start_time,end_time);
функции SQL, но как это сейчас, я застрял. Пожалуйста, оцените вашу помощь или любую другую альтернативу.
Что версию SQL-Server вы используете? 2012 поддерживает это [LAG] (http://technet.microsoft.com/en-us/library/hh231256.aspx) и [LEAD] (http://technet.microsoft.com/en-us/library/hh213125. aspx), что сделало бы это очень легким для получения предыдущего времени. -> 'LAG (followuptime') OVER (ORDER BY followuptime)' – GarethD
Также, если вы делаете 'MAX (ROW_NUMBER() ...' без PARTITION BY, максимальное количество строк будет таким же, как 'COUNT (*)'. Поэтому для вашего второго запроса, который терпит неудачу: 'SELECT MAX (ROW_NUMBER() OVER (ORDER BY [followuptime])) из [dbo]. [FollowUp]', вы можете получить тот же результат с помощью -> 'SELECT COUNT (*) FROM dbo.Followup' – GarethD
SQL-сервер 2012 и студийная версия 11.0.2100.60. Но его высказывание LAG не является встроенной функцией .... –