从多个分组中选择最后一个值(SQL Server)

时间:2016-09-27 22:04:46

标签: sql sql-server sql-server-2005 sql-server-2008-r2

我不确定如何分组并从该组中选择最后一个值,并且可以使用一些专业知识。

这个简单的表格(下表中的代码段)包含各种时间戳的值,以便我检查的一系列网址无法正确回复。突出显示的黄色线代表我试图捕获的数据。

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

3 个答案:

答案 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
)