Oracle выберите максимум из таблицы умножения - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть этот запрос. Не работает Мне нужно выбрать MAX из поля в 3 таблицах, где год = 2002. Этот код дает мне "order_number": неверный идентификатор ". Но он существует в таблицах. Что не так. Та же ошибка с использованием псевдонимов:

select MAX(ROUND(to_number(replace(substr(order_number,0, INSTR(a.order_number,'-')-1),'.',',')))) from(
SELECT e.order_date FROM employee_trip_orders e
where EXTRACT(YEAR FROM e.order_date)='2020' 
union all
SELECT p.order_date FROM postgraduate_trip_orders p
where EXTRACT(YEAR FROM p.order_date)='2020' 
union all
SELECT s.order_date FROM student_trip_orders s
where EXTRACT(YEAR FROM s.order_date)='2020' 
) a

Заранее спасибо)

1 Ответ

2 голосов
/ 13 февраля 2020

Вы никогда не выбирали order_number в подзапросе объединения, поэтому Oracle сообщает, что этот столбец недоступен во внешнем выборе. Попробуйте эту версию:

SELECT MAX(ROUND(TO_NUMBER(REPLACE(SUBSTR(order_number, 0, INSTR(order_number, '-') - 1), '.', ','))))
FROM
(
    SELECT order_number FROM employee_trip_orders EXTRACT(YEAR FROM order_date) = 2020 UNION ALL
    SELECT order_number FROM postgraduate_trip_orders EXTRACT(YEAR FROM order_date) = 2020 UNION ALL
    SELECT order_number FROM student_trip_orders EXTRACT(YEAR FROM order_date) = 2020
) t;
...