¿Cómo escribo una combinación con este criterio de coincidencia inusual?
Quiero "unir a la izquierda" una tabla para que un valor se una no solo a una fila coincidente, sino también a cualquier fila no coincidente posterior, hasta la siguiente fila coincidente. Para decirlo de otra manera, quiero rellenar nulos con el valor anterior no nulo.
Datos de muestra y resultado deseado:
Mesax
:
id
----
1
2
3
4
5
Mesay
:
id | val
----+-----
1 | a
4 | b
Resultado deselect 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 |
Resultado deseado:
id | val
----+-----
1 | a
2 | a
3 | a
4 | b
5 | b