Ваш код включает в себя:
SELECT * FROM (
SELECT
m.shipment_id
m.route_id,
...
Вы пропустили запятую после m.shipment_id
, поэтому он пытается интерпретировать m.route_id
как псевдоним столбца для идентификатора отгрузки, что не соответствует вашим намерениям;и псевдоним - это отдельный идентификатор, а не иерархия, разделенная точками.Следовательно, вы видите ошибку, хотя она не исходит от самой Oracle - ваш клиент, похоже, сначала ее анализирует.
Oracle также не поддерживает LIMIT
, но с 12c он имеет ограничивающий строку пункт , который вы можете использовать вместо:
SELECT * FROM (
SELECT
m.shipment_id,
m.route_id,
m.leg_sequence_id,
m.leg_warehouse_id,
m.leg_ship_method,
row_number() over (partition by m.route_id order by m.leg_sequence_id desc) as rn
FROM posimorders.sc_execution_eu.o_detailed_routes_v2 m
)
WHERE rn=1
FETCH FIRST 100 ROWS ONLY;
или WITH TIES
, если хотите.
Три уровня в posimorders.sc_execution_eu.o_detailed_routes_v2
тоже выглядят неверно ... см. Документы .