Расширение ответа @ astander для включения дополнительного требования вычитания:
select a, b, c, d,
min(tran_date) as min_tran_date,
min(tran_date) - (select ref_date from ref_table) as diff
from my_table
group by a, b, c, d;
Обратите внимание, что diff
может быть положительным или отрицательным, в зависимости от того, стоит ли ref_date
перед всеми значениями tran_date
, после всех них или где-то посередине.
Если вас интересуют только определенные значения diff
- скажем, где минимальное число tran_date
находится после ref_date
- вы можете добавить having
предложение для фильтрации результатов;в этом случае:
having min(tran_date) - (select ref_date from ref_table) > 0
или, возможно, будет более понятным:
having min(tran_date) > (select ref_date from ref_table)