根据两列重复值找出唯一的最高记录

下面是一些数据

根据两列重复值找出唯一的最高记录

现在我想通过对 sys_movement_evt_id 使用 order by 来仅检索具有唯一 current_position_latitude 和 current_position_longitude 以及最高记录的记录。这低于我需要的输出。

根据两列重复值找出唯一的最高记录

我当前的查询是

select
        CURRENT_POSITION_LATITUDE,CURRENT_POSITION_LONGITUDE,SYS_EVT_TARGET_ID,SYS_MOVEMENT_EVT_ID
from TMS_MOVEMENT_EVT
where SYS_EVT_TARGET_ID = 10245 and
      CURRENT_POSITION_LATITUDE is not null and CURRENT_POSITION_LATITUDE != 0 and 
      CURRENT_POSITION_LONGITUDE is not null and CURRENT_POSITION_LONGITUDE != 0 

请告诉我如何获得所需的输出。

iCMS 回答:根据两列重复值找出唯一的最高记录

您可以使用 RANK() 函数来实现这一点

with CTE_DATA AS (
                  SELECT
                         CURRENT_POSITION_LATITUDE,CURRENT_POSITION_LONGITUDE,SYS_EVT_TARGET_ID,SYS_MOVEMENT_EVT_ID
                         RANK() OVER(PARTION BY CURRENT_POSITION_LATITUDE,CURRENT_POSITION_LONGITUDE
                                      ORDER BY SYS_MOVEMENT_EVT_ID DESC) LAT_RANK
                  FROM TMS_MOVEMENT_EVT
                 )
SELECT
      CURRENT_POSITION_LATITUDE,SYS_MOVEMENT_EVT_ID
FROM CTE_DATA
WHERE LAT_RANK = 1

Some info on using RANK()

本文链接:https://www.f2er.com/105843.html

大家都在问