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 ...

questionAnswers(3)

yourAnswerToTheQuestion