oracle 开窗函数使用

select cast(last_operate_tm as timestamp) query_time,
               plate_num,
               container_no,
               waybill_no,
               operate_zone_code,
               waybill_route_status,
               operate_batch_code,
               lostime,
               warntime,
               zone_code,
               high_worth,
               countnum,
               exception_node,
               appreciation_service_type,
               cast(doubt_miss_tm as timestamp) doubt_miss_tm
          from (select count(*) over(partition by nvl(nvl2(plate_num, plate_num, container_no), dbms_random.value), zone_code, to_char(doubt_miss_tm, 'yyyy-MM-dd hh24:mi') order by nvl2(plate_num, plate_num, container_no), zone_code, to_char(doubt_miss_tm, 'yyyy-MM-dd hh24:mi')) countnum,
                       row_number() over(partition by nvl(nvl2(plate_num, plate_num, container_no), dbms_random.value), zone_code, to_char(doubt_miss_tm, 'yyyy-MM-dd hh24:mi') order by nvl2(plate_num, plate_num, container_no), zone_code, to_char(doubt_miss_tm, 'yyyy-MM-dd hh24:mi')) rw,
                       last_operate_tm,
                       plate_num,
                       container_no,
                       waybill_no,
                       operate_zone_code,
                       waybill_route_status,
                       operate_batch_code,
                       round(to_number(sysdate - last_operate_tm) * 1440) as lostime,
                       round(to_number(sysdate - doubt_miss_tm) * 1440) as warntime,
                       zone_code,
                       high_worth,
                       exception_node,
                       appreciation_service_type,
                       doubt_miss_tm
                  from tt_doubt_miss m, tm_department t
                 where m.zone_code = t.dept_code
                   and t.dist_code in ('755')) A
         WHERE countnum = RW
         ORDER BY LAST_OPERATE_TM ASC

你可能感兴趣的:(oracle,开窗函数)