2016-09-27 111 views
0

我不確定如何對該組中的最後一個值進行分組和選擇,並且可以使用一些專業知識。從多個分組中選擇最後一個值(SQL Server)

這個簡單的表格(下表中的片段)包含了我檢查的一系列URL沒有正確響應時的各種時間戳的值。黃色突出顯示的行代表我試圖捕獲的數據。

Objective

基本上我試圖捕捉每一個分組的最後一個停機時間戳記。 failure_id將自動增加每個條目。

我有以下配置的部分成功:

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

,然後建立我的實際SELECT語句的數據和條件

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

試試這個: 與失敗視爲 ( SELECT 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

相關問題