文章

Oracle SQL 查询获取人员最新一条通行记录

Oracle SQL 查询获取人员最新一条通行记录

有一张表中有以下几个字段

字段名说明
ID通行记录ID
RYBH人员编号
FX通行方向(进,出)
TXSJ通行日期(yyyy-mm-dd hh24:mi:ss)

现在要查询每个人员近7天最新一条出入记录是进还是出,这里使用row_number() over (PARTITION BY XXX ORDER BY XXX)进行编号和分组处理,SQL 如下

select RYBH,WYBS,FX,TXSJ,flag 
from (
    select
        RYBH,WYBS,FX,TXSJ,
        row_number() over (PARTITION BY RYBH ORDER BY TXSJ desc) as flag
    from
        T_GXXS_BZKSSSJCXX
    where TO_DATE(TXSJ, 'yyyy-mm-dd hh24:mi:ss') >= SYSDATE -6
    order by TXSJ desc
)temp where temp.flag = '1'
License:  CC BY 4.0