SELECT a.names, a.car_owner_flag, ROW_NUMBER() OVER (ORDER BY a.names ASC) AS car_no FROM car_org a WHERE a.car_owner_flag =1 UNION ALL SELECT p.names, p.car_owner_flag, SUM(1) OVER (PARTITION BY MOD(p.ordr,3) ORDER BY p.ordr) AS passenger_car_no FROM (SELECT ROW_NUMBER() OVER (ORDER BY y.names ASC) ordr, y.names, y.car_owner_flag FROM car_org y WHERE y.car_owner_flag = 0 ) p ORDER BY 3 ASC, 2 DESC;