У меня есть следующий запрос, где намерение состоит в том, чтобы показать каждую запись со временем до следующей записиSQL «Где В» для пустого подзапроса
данные:
gid time name
1010883478 29/03/2016 0:00:02 John
1010883527 29/03/2016 0:00:04 John
1010883578 29/03/2016 0:00:06 John
SQL:
SELECT A.[gid]
,A.[time]
,A.[name]
,(B.[time] - A.[time]) as timeTilNext
FROM [location] A CROSS JOIN [location] B
WHERE B.[gid] IN (
SELECT MIN(C.[gid])
FROM [location] C
WHERE C.[gid] > A.[gid] AND C.[name] = A.[name])
ORDER BY A.[gid]
Выходной ток:
gid time name timeTilNext
1010883478 2016-03-29 00:00:02.000 John 1900-01-01 00:00:02.000
1010883527 2016-03-29 00:00:04.000 John 1900-01-01 00:00:02.000
Ожидаемый результат:
gid time name timeTilNext
1010883478 2016-03-29 00:00:02.000 John 1900-01-01 00:00:02.000
1010883527 2016-03-29 00:00:04.000 John 1900-01-01 00:00:02.000
1010883578 2016-03-29 00:00:06.000 John -1 (or whatever)
Однако, он не показывает запись для самого высокого [GID] для данного [имя] (только второй самый высокий).
Я надеюсь на высший [gid], чтобы показать -1 для timeTilNext, чтобы указать, что событий больше нет.
Есть идеи по изменению моего запроса?
пожалуйста, после некоторых выборочных данных и ожидаемого результата. Какую версию SQL Server вы используете? – Squirrel
@Squirrel сделано! – Zeophlite
Неужели почему удаленные и почему ответы были удалены? – Zeophlite