Select 多个分组中的最后一个值(SQL 服务器)
Select last value from within multiple groupings (SQL Server)
我不确定如何分组和 select 该组中的最后一个值,并且可以使用一些专业知识。
这个简单的 table(下面 table 的片段)保存了当我检查的一系列 URL 没有正确响应时的各种时间戳的值。黄色突出显示的线表示我正在尝试捕获的数据。
本质上,我正在尝试捕获每个分组的最后一次停机时间戳。 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
试试这个
WITH FAILURES AS
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY url_id ,last_check_success ORDER BY failure_id DESC) AS lastFail
FROM URL_FAILURES
)
试试这个:
与失败一样
(
SELECT url_id, request_start, last_check_success, last_value(failure_id) OVER (PARTITION BY last_check_success ORDER BY request_start)
来自 URL_FAILURES
)
您需要使用 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
)
我不确定如何分组和 select 该组中的最后一个值,并且可以使用一些专业知识。
这个简单的 table(下面 table 的片段)保存了当我检查的一系列 URL 没有正确响应时的各种时间戳的值。黄色突出显示的线表示我正在尝试捕获的数据。
本质上,我正在尝试捕获每个分组的最后一次停机时间戳。 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
试试这个
WITH FAILURES AS
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY url_id ,last_check_success ORDER BY failure_id DESC) AS lastFail
FROM URL_FAILURES
)
试试这个: 与失败一样 ( SELECT url_id, request_start, last_check_success, last_value(failure_id) OVER (PARTITION BY last_check_success ORDER BY request_start) 来自 URL_FAILURES )
您需要使用 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
)