У меня есть таблица, в которой хранятся затраты на продукты. Я бы хотел получить среднюю стоимость И последний счет-фактуру для каждого продукта.Подзапрос Oracle в списке
Мое решение было создание суб-выбора, чтобы получить последнюю покупки счета-фактуры, но, к сожалению, я получаю
ORA-00904: "B"."CODPROD": invalid identifier
Мой запрос
SELECT (b.cod_aux) product,
-- here goes code to get average cost,
(SELECT round(valorultent, 2)
FROM (SELECT valorultent
FROM pchistest
WHERE codprod = b.codprod
ORDER BY dtultent DESC)
WHERE ROWNUM = 1)
FROM pchistest a, pcembalagem b
WHERE a.codprod = b.codprod
GROUP BY a.codprod, b.cod_aux
ORDER BY b.cod_aux
Короче, что я делаю на суб- select заказывает по наследству и получает первую строку с данным продуктом b.codprod
Редактировать свой вопрос и предоставить образцы данных и желаемые результаты. Неясно, что вы хотите сделать. Например, какие столбцы представляют «цену», что означает «последний счет-фактура покупки»? И какой столбец идентифицирует продукт? –
В версии до версии 12c коррелированный подзапрос может ссылаться на столбец родительского запроса только на один уровень вверх. 'codprod = b.codprod' пересекает два уровня, поэтому ошибка. –
ROWNUM не работает таким образом во вспомогательном запросе. Это относится ко всему запросу. Вам нужно использовать ROW_NUMBER() OVER (PARTITION BY c.valorultent ORDER BY c.dtultent DESC) AS row_no и WHERE row_no = 1 во внешнем запросе. – Doug