ROW_NUMBER() OVER (partition_by 分组列(分区列)orderby 排序字段) as flag ----是否第一条记录
既可满足分区的需求,也可以根据一定的顺序来排序。
一:
select min(dtdate) dtdate,regstudentid,1 f_flag --是否首次报名 --报入学生id
from dm_fact_class_reg
group by regstudentid
order by regstudentid
二:
select *
from (select row_number() over(partition by regstudentid order by dtdate asc) f_flag,--是否首次报名
regstudentid,dtdate
from dm_fact_class_reg) a
where a.f_flag=1
order by regstudentid
由以上结果发现,实现功能类似,row_number() 可以将查询结果排序,去重,取第一条记录或第二、第三。。。。条记录。
例如:
其他自己体会!