Pobierz ostatnią znaną wartość dla każdej kolumny wiersza
Nie jestem pewien co do poprawnych słów, aby zadać to pytanie, więc rozbiję je.
Mam tabelę w następujący sposób:
date_time | a | b | c
Ostatnie 4 wiersze:
15/10/2013 11:45:00 | null | 'timtim' | 'fred'
15/10/2013 13:00:00 | 'tune' | 'reco' | null
16/10/2013 12:00:00 | 'abc' | null | null
16/10/2013 13:00:00 | null | 'died' | null
Jak uzyskać ostatni rekord, ale z wartością ignorującą wartość null i zamiast tego uzyskać wartość z poprzedniego rekordu.
W moim podanym przykładzie wiersz zwrócony będzie
16/10/2013 13:00:00 | 'abc' | 'died' | 'fred'
Jak widać, jeśli wartość dla kolumny jest null, to przechodzi do ostatniego rekordu, który ma wartość dla tej kolumny i używa tej wartości.
To powinno być możliwe, po prostu nie mogę tego zrozumieć. Do tej pory wymyśliłem tylko:
select
last_value(a) over w a
from test
WINDOW w AS (
partition by a
ORDER BY ts asc
range between current row and unbounded following
);
Ale to dotyczy tylko jednej kolumny ...