如何按日期获取最新行?
How to get the latest row by date?
我有一个显示如下数据的现有查询:
NAME COURSE PROF LASTUPDATE
NAME_1 MATH1 PROF_A 2015-10-14 09:55:26.637
NAME_2 ENG1 PROF_B 2015-10-14 09:54:07.087
NAME_2 ENG1 PROF_C 2015-10-14 10:02:31.663
NAME_3 SOC1 PROF_D 2015-10-14 09:53:28.253
NAME_4 PHL1 PROF_E 2015-10-14 09:55:47.293
NAME_3 SOC1 PROF_F 2015-10-14 09:59:00.000
我只想 select 具有相同名称和课程的最新行(就上次更新而言)?结果 table 应该是这样的:
NAME COURSE PROF LASTUPDATE
NAME_1 MATH1 PROF_A 2015-10-14 09:55:26.637
NAME_2 ENG1 PROF_C 2015-10-14 10:02:31.663
NAME_4 PHL1 PROF_E 2015-10-14 09:55:47.293
NAME_3 SOC1 PROF_F 2015-10-14 09:59:00.000
提前致谢!
典型的方法是row_number()
:
select t.*
from (select t.*,
row_number() over (partition by name, course order by lastupdate desc) as seqnum
from t
) t
where seqnum = 1;
尝试first_value
select
first_value(last_update) over (partition by name_2 order by last_update DESC) as last_update
from my_table;
我有一个显示如下数据的现有查询:
NAME COURSE PROF LASTUPDATE
NAME_1 MATH1 PROF_A 2015-10-14 09:55:26.637
NAME_2 ENG1 PROF_B 2015-10-14 09:54:07.087
NAME_2 ENG1 PROF_C 2015-10-14 10:02:31.663
NAME_3 SOC1 PROF_D 2015-10-14 09:53:28.253
NAME_4 PHL1 PROF_E 2015-10-14 09:55:47.293
NAME_3 SOC1 PROF_F 2015-10-14 09:59:00.000
我只想 select 具有相同名称和课程的最新行(就上次更新而言)?结果 table 应该是这样的:
NAME COURSE PROF LASTUPDATE
NAME_1 MATH1 PROF_A 2015-10-14 09:55:26.637
NAME_2 ENG1 PROF_C 2015-10-14 10:02:31.663
NAME_4 PHL1 PROF_E 2015-10-14 09:55:47.293
NAME_3 SOC1 PROF_F 2015-10-14 09:59:00.000
提前致谢!
典型的方法是row_number()
:
select t.*
from (select t.*,
row_number() over (partition by name, course order by lastupdate desc) as seqnum
from t
) t
where seqnum = 1;
尝试first_value
select
first_value(last_update) over (partition by name_2 order by last_update DESC) as last_update
from my_table;