Select第一行最后一组
Select the first row of the last group
我正在尝试查询 2012 SQL-服务器的一些数据。
数据如下table
From_Date
To_Date
2020-11-29
2022-02-23
2022-02-23
2022-02-26
2022-02-27
2022-03-01
2022-03-01
2022-03-04
2022-03-07
2022-03-10
2022-03-10
2022-03-15
我想要得到的是连续日期块中的第一个日期。所提供示例中的这些块将是第 1->2 行、第 3->4 行和第 5->6 行。我想 return 第 5 行中的 from_date 列,因为它是最后一个连续日期块中的第一个日期。
我尝试过各种方法,但我对 SQL 不是很熟悉,所以我希望这里的任何人都可以指出正确的方向。提前致谢!
WITH
gaps AS
(
SELECT
*,
CASE WHEN from_date = LEAD(to_date) OVER (ORDER BY from_date DESC) THEN 0 ELSE 1 END AS is_first_row_of_group
FROM
your_table
)
SELECT TOP (1)
from_date
FROM
gaps
WHERE
is_first_row_of_group = 1
ORDER BY
from_date DESC
我正在尝试查询 2012 SQL-服务器的一些数据。
数据如下table
From_Date | To_Date |
---|---|
2020-11-29 | 2022-02-23 |
2022-02-23 | 2022-02-26 |
2022-02-27 | 2022-03-01 |
2022-03-01 | 2022-03-04 |
2022-03-07 | 2022-03-10 |
2022-03-10 | 2022-03-15 |
我想要得到的是连续日期块中的第一个日期。所提供示例中的这些块将是第 1->2 行、第 3->4 行和第 5->6 行。我想 return 第 5 行中的 from_date 列,因为它是最后一个连续日期块中的第一个日期。
我尝试过各种方法,但我对 SQL 不是很熟悉,所以我希望这里的任何人都可以指出正确的方向。提前致谢!
WITH
gaps AS
(
SELECT
*,
CASE WHEN from_date = LEAD(to_date) OVER (ORDER BY from_date DESC) THEN 0 ELSE 1 END AS is_first_row_of_group
FROM
your_table
)
SELECT TOP (1)
from_date
FROM
gaps
WHERE
is_first_row_of_group = 1
ORDER BY
from_date DESC