Jak napisać połączenie z nietypowymi kryteriami dopasowania?

Chcę „pozostawić połączenie” tabeli, aby wartość nie była połączona nie tylko z pasującym wierszem, ale również z kolejnymi niepasującymi wierszami, aż do następnego pasującego wiersza. Innymi słowy, chcę wypełnić wartości null poprzednią wartością inną niż null.

Przykładowe dane i pożądany wynik:

Stółx:

 id 
----
  1
  2
  3
  4
  5

Stóły:

 id | val 
----+-----
  1 | a
  4 | b

Wynikselect x.id, y.val from x left join y on x.id=y.id order by x.id;:

 id | val 
----+-----
  1 | a
  2 | 
  3 | 
  4 | b
  5 | 

Pożądany rezultat:

 id | val 
----+-----
  1 | a
  2 | a
  3 | a
  4 | b
  5 | b

questionAnswers(7)

yourAnswerToTheQuestion