Исходя из контекста вашего вопроса, у вас, вероятно, есть другие столбцы, поэтому возвращение только отдельных идентификаторов файлов не является вариантом.
В вашем примере вы можете вызвать функцию в подзапросе на File
:
SELECT f.*
FROM (SELECT f.*, get_lowest_due_date(f.fileId) as lowest_due_date
FROM File f
) f JOIN
Order o
ON o.fileId = f.fileId;
Есть и другие приемы, которые вы можете использовать, например:
select fo.*,
max(first_lowest_due_date) over (partition by fileid) as lowest_due_date
from (select . . .,
(case when row_number() over (partition by fileid order by orderid) = 1
then get_lowest_due_date(f.fileId)
end) as first_lowest_due_date
from file f join
orders o
on o.fileid = f.fileid
) fo;
Тем не менее, я подозреваю, что вы думаете, что определяемая пользователем функция - это хорошо идея. SQL не является языком программирования, и, увы, пользовательские функции в значительной степени имеют низкую производительность. Если возможно, я бы посоветовал отказаться от этой функции, возможно, используя представление или встроенную функцию с табличным значением.