我有以下2条记录:
键 | 开始_dt | 结束_dt | id | 状态 |
---|---|---|---|---|
12 | 2020-8-12 | 2300-01-01 | 1 | 活跃 |
12 | 1998-9-23 | 2014-9-23 | 2 | 活跃 |
这是我目前拥有的
row_number()
功能:
row_number() over (partition by id order by status, end_dt desc) rnk
我想知道我需要在上面的
row_number()
函数中添加什么,以便只显示最上面的记录:
键 | 开始_dt | 结束_dt | id | 状态 |
---|---|---|---|---|
12 | 2020-8-12 | 2300-01-01 | 1 | 活跃 |
以下是我为 SQL Server 执行此操作的方法。对于 BigQuery,您的语法会略有不同,但我确信结构会相同。
create table #a (
[key] int
, start_dt date
, end_dt date
, id int
, status varchar(20)
)
insert into a
values
(12, {d '2020-08-12'}, {d '2300-01-01'}, 1, 'active')
, (12, {d '1998-09-23'}, {d '2014-09-23'}, 2, 'active')
;
with
b as (
select
[key]
, start_dt
, end_dt
, id
, status
, max(end_dt) over (partition by [key]) as maxenddt
from #a
)
select
[key]
, start_dt
, end_dt
, id
, status
from b
where end_dt = maxenddt