Итак, у меня есть таблица, в которой сделан запрос журнала. таблица выглядит следующим образом:sql самые последние две записи, отфильтрованные по дате
Id SiteId StartedAt FinishedAt Url
1 2926 2015-08-10 14:53:00.230 2015-08-10 14:53:02.890 https://site1.com/Index.aspx
2 2928 2015-08-10 14:52:57.190 2015-08-10 14:53:33.107 https://site2.com/Admin/Index.aspx
3 2926 2015-08-10 14:53:02.897 2015-08-10 14:53:25.177 https://site1.com
4 2926 2015-08-10 14:53:02.897 2015-08-10 14:53:48.647 https://site2.com?ID=1
5 2926 2015-08-10 14:53:02.900 2015-08-10 14:53:48.947 https://site1.com/Tab?id=1
6 2926 2015-08-10 14:53:02.900 2015-08-10 14:53:48.377 https://site2.com/5
Мне нужно отобразить этот запрос в Последнего запроса и предыдущего запросом способа. См. Изображение ниже.
Так что я пытаюсь выбрать два самых последних запрос, сделанный для любого отдельного URL, и я могу получить эту работу. См.: Query most recent TWO entries per widget.
Однако этот список, который я использую для отображения запроса, имеет сборщик дат. Таким образом, пользователь может выбрать ответ 8/12/2015, и это будет выбор всего Last Request, который начался в этот день, и каждый из этих запросов затем показывает предыдущий запрос, который может не обязательно попадать на выбранный день, и разница между ними.
Одна строка вышеуказанной разметки будет равна двум строкам моего SQL-вывода. Поэтому для каждого уникального URL я получаю 2 строки. Представляем последний запрос и тот, который прямо перед ним.
Так вот, где я в настоящее время:
SELECT [Id], [FK_SiteId] as SiteId, [StartedAt],[FinishedAt],[Url]
FROM SiteWarmupMetrics sw
WHERE (Select Count(*) From SiteWarmupMetrics s
Where sw.Url = s.Url
AND s.StartedAt > sw.StartedAt) < 2
AND SUBSTRING(Url, CHARINDEX ('/', Url, 9), 500) = '/Index.aspx'
ORDER BY sw.Url, sw.StartedAt
Теперь я попытался добавить AND CONVERT(DATE, s.StartedAt) = '2015-08-10'
но не совсем работает. Я чувствую, что я почти что-то пропустил.
Так вот результат я пытаюсь получить, но с запросом, который принимает в дате:
Id SiteId StartedAt FinishedAt Url
20 2928 2015-08-10 16:12:39.430 2015-08-10 16:13:14.157 https://site1.com/Index.aspx
38 2928 2015-08-12 11:22:46.593 2015-08-12 11:23:16.183 https://site1.com/Index.aspx
19 2926 2015-08-10 16:12:39.430 2015-08-10 16:12:45.207 https://site2.com/Index.aspx
37 2926 2015-08-12 11:22:46.587 2015-08-12 11:22:52.030 https://site2.com/Index.aspx
Не могли бы вы разместить http://sqlfiddle.com/ свою структуру и данные таблицы? – Hackerman
Какую версию SQL Server вы используете? В последних версиях есть «оконные» функции, которые позволяют вам легко получить доступ к предыдущей строке, что может оказаться полезным ... пока вы можете гарантировать выполнение только SQL2014 или более поздних версий. – pmbAustin
К сожалению, я запускаю его на SQL 2008 – Adam