jueves, 20 de febrero de 2020

Rellenar Celdas con un Valor Anterior


tenemos una tabla como la siguiente:


queremos rellenar los Valor NULL con el último valor anterior conocido.




ejecutamos la siguiente query


-- CUENTA EL CAMPO QUE TIENE NULLS

    SELECT ID, v
        ,Cuenta=COUNT(v) OVER (ORDER BY ID)
    FROM #X




Este es el truco, va contando el número de valores encontrados:


ya solamente se necesita un SELECT MAX Particionado por la columna "Cuenta".








SELECT ID, v, s=MAX(v) OVER (PARTITION BY cuenta)
FROM
(
    SELECT ID, v
        ,Cuenta=COUNT(v) OVER (ORDER BY ID)
    FROM #X
) a
ORDER BY ID;








source: