Как-то так?
partition
гарантирует, что каждый бренд получает свой собственный результат order by
говорит ему получить result
значение, которое принадлежит последнемуyear_month
Я изменил входные данные, чтобы показать, что 50
не так очевидно, как значение, принадлежащее последнему year_month
.
SQL> with test (brand, result, year_month) as
2 (select 'nike', 200, '2018-01' from dual union all
3 select 'nike', 200, '2018-02' from dual union all
4 select 'nike', 200, '2018-03' from dual union all
5 select 'nike', 50 , '2018-04' from dual
6 )
7 select brand,
8 first_value (result) over (partition by brand order by year_month desc) result,
9 year_month
10 from test
11 order by year_month ;
BRAN RESULT YEAR_MO
---- ---------- -------
nike 50 2018-01
nike 50 2018-02
nike 50 2018-03
nike 50 2018-04
SQL>