where date_column <= sysdate
или, в конечном итоге
where date_column <= trunc(sysdate)
в зависимости от того, задействован ли компонент времени или нет.
[ПРАВИТЬ, после того, как вы включили данные выборки]
Поскольку «сегодня» равно 2019-10-13
, то посмотрите, поможет ли это;вам понадобятся строки с # 14 и далее, поскольку у вас уже есть эти таблицы. Кстати, похоже, что USERS
не играет никакой роли в желаемом результате.
SQL> with
2 users (id, name) as
3 (select 1, 'Jeff' from dual union all
4 select 2, 'Geoff' from dual
5 ),
6 payments (user_id, start_date, price) as
7 (select 1, date '2019-10-14', 1000 from dual union all
8 select 1, date '2019-10-11', 3500 from dual union all
9 select 1, date '2019-10-16', 2000 from dual union all
10 select 2, date '2019-10-13', 3500 from dual union all
11 select 2, date '2019-10-12', 6500 from dual
12 ),
13 --
14 temp as
15 (select p.user_id, p.start_date, p.price,
16 row_number() over (partition by user_id order by start_date desc) rn
17 from payments p
18 where p.start_date <= date '2019-10-13'
19 )
20 select user_id, start_date, price
21 from temp
22 where rn = 1;
USER_ID START_DATE PRICE
---------- ---------- ----------
1 2019-10-11 3500
2 2019-10-13 3500
SQL>