2016-09-27 5 views
0

Я не уверен, как обе группы и выбрать последнее значение из этой группы, и могут использовать некоторые знания.Выберите последнее значение из нескольких групп (SQL Server)

Эта простая таблица (фрагмент таблицы ниже) содержит значения различных временных меток, когда серия URL-адресов, которые я проверяю, не отвечает правильно. Желтые выделенные строки представляют данные, которые я пытаюсь захватить.

Objective

По сути я пытаюсь захватить последние простои метку времени для каждой группы. fail_id будет автоматически увеличиваться с каждой записью.

Я получил частичный успех со следующим:

WITH FAILURES AS 
(
    SELECT *, ROW_NUMBER() OVER (PARTITION BY url_id ORDER BY failure_id DESC) AS lastFail 
    FROM URL_FAILURES 
) 

, а затем строить мой фактический ЗЕЬЕСТ с этими данными и условия

WHERE 
    lastFail = 1 

... но пренебрегает группировки что мне нужно для last_check_success.


Microsoft SQL Server 2008 R2 (SP3) 
Database Compatibility: SQL Server 2005 

ответ

1

попробовать это

WITH FAILURES AS 
    (
     SELECT *, ROW_NUMBER() OVER (PARTITION BY url_id ,last_check_success ORDER BY failure_id DESC) AS lastFail 
     FROM URL_FAILURES 
    ) 
+0

Такая небольшая настройка - вот и все! Спасибо – Craig

1

Попробуйте это: неудачами AS ( ВЫБОР url_id, request_start, last_check_success, last_value (failure_id) OVER (PARTITION BY last_check_success ORDER BY request_start) FROM URL_FAILURES )

+0

Я боюсь, что LAST_VALUE был представлен в SQL Server 2012, тогда как я заблокирован в предыдущей версии – Craig

1

Вам нужно t o используйте LAST_VALUE для вашего требования

WITH FAILURES AS 
(
    SELECT *, LAST_VALUE(Failure_id) OVER (PARTITION BY url_id ,last_check_success ORDER BY Request_Start) AS lastFail 
    FROM URL_FAILURES 
) 
+0

Я боюсь, что LAST_VALUE был представлен в SQL Server 2012, тогда как я заблокирован в предыдущей версии – Craig

 Смежные вопросы

  • Нет связанных вопросов^_^