我不确定如何分组并从该组中选择最后一个值,并且可以使用一些专业知识。
这个简单的表格(下表中的代码段)包含各种时间戳的值,以便我检查的一系列网址无法正确回复。突出显示的黄色线代表我试图捕获的数据。
基本上我试图捕获每个分组的最后停机时间戳。 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
答案 0 :(得分: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
)
答案 1 :(得分:1)
试试这个: 与失败一样 ( SELECT url_id,request_start,last_check_success,last_value(failure_id)OVER(PARTITION BY last_check_success ORDER BY request_start) 来自URL_FAILURES )
答案 2 :(得分:1)
您需要根据您的要求使用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
)