如何根据状态或最近更新的时间戳获取记录?

How to get records based on status or recent updated timestamp?

我有以下车辆 table 并具有给定的记录。

Create Table Vehicle (Vehicle_Type varchar(50),Car_Number number,Car_Type varchar(10),Car_Status char(1),Car_Repaired_Date Date);
Insert into Vehicle(Vehicle_Type,Car_Number,Car_Type,Car_Status,Car_Repaired_Date)values('CAR',123456,'SUV','Y','16-MAR-20 06.49.05');
Insert into Vehicle(Vehicle_Type,Car_Number,Car_Type,Car_Status,Car_Repaired_Date)values('CAR',234567,'SUV','N','16-MAR-20 06.49.05');
Insert into Vehicle(Vehicle_Type,Car_Number,Car_Type,Car_Status,Car_Repaired_Date)values('CAR',334567,'SEDAN','N','16-MAR-20 06.49.05');
Insert into Vehicle(Vehicle_Type,Car_Number,Car_Type,Car_Status,Car_Repaired_Date)values('CAR',4567890,'SEDAN','N','14-MAR-20 06.49.05');
commit;

我正在尝试获取 Vehicle_Type='CAR' 的记录,其中 CAR_STATUS='Y' 具有不同的 CAR_TYPE.If 任何 CAR_TYPE' s CAR_STATUS='N' 然后获取那个 CAR_TYPE.

最近更新的 CAR

输入:

预期输出;

提前致谢。

如果我没理解错的话,你可以用row_number():

select v.*
from (select v.*,
             row_number() over (partition by car_type
                                order by car_status desc,   -- 'Y' before 'N'
                                         car_repaired_date desc
                               ) as seqnum
      from vehicle v
      where vehicle_type = 'CAR'
     ) v
where seqnum = 1;

这 returns 每个 car_type 一行(基于 partition by 子句)。该行是带有 'Y' 的最新行,或者如果没有 'Y',则为带有 'N'.

的最新行