Я пытаюсь получить самую старую дату обработки для каждого продукта, как это:
select prod_id, prod_name, prod_date, min(prod_date) over (partition by prod_id) as min_prod_date
from dim_product
where prod_name in ('xxx', 'yyy', 'zzz')
having prod_date = min_prod_date
Это дает мне ошибку:
ORA-00904: "min_prod_date" : неверный идентификатор
Итак, я попытался использовать функцию min () в предложении has, которая выдала мне ошибку:
ORA-30483: оконные функции не разрешены здесь
В качестве альтернативы я изменил свой запрос следующим образом:
with temp as(
select prod_id, prod_name, prod_date, min(prod_date) over (partition by prod_id) as min_prod_date
from dim_product
where prod_name in ('xxx', 'yyy', 'zzz')
having prod_date = min_prod_date))
select * from temp where prod_date = min_prod_date
Это правильный способ сделать что-то или есть другой эффективный метод?