Выбор строки с самым последним изменением значения - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу иметь возможность выбрать самую последнюю строку с изменением любого значения столбца из предыдущей строки.

Например, в этой таблице в индикаторе есть изменение с 1 января по 3 января значение, поэтому мы будем двигаться к Jan2. Впоследствии изменение будет происходить 9 января, поэтому мы перейдем к 9 января, и окончательным результатом будет строка 9 января, поскольку это была строка с самым последним изменением.

date rate    indicator
Jan1 2.00    Y  
Jan3 2.00    N  
Jan9 3.00    N

В этой таблице есть изменение индикатора с 1 января по 3 января, но не последующее изменение значений на 9 января. Поэтому строка вывода будет строкой Jan3.

date rate    indicator
Jan1 2.00    Y  
Jan3 2.00    N  
Jan9 2.00    N  

1 Ответ

0 голосов
/ 16 апреля 2020

Вы можете использовать оконные функции, а затем упорядочить:

select t.*
from (select t.*,
             lag(date) over (order by date) as prev_date,
             lag(date) over (partition by rate, indicator order by date) as prev_ri_date
      from t
     ) t
where prev_ri_date <> prev_date or prev_ri_date is null  -- aha!  something changed
order by date desc
fetch first 1 row only;
...