if null replace wiht previous row
;WITH CTE AS
(
SELECT *,ROW_NUMBER() OVER (ORDER BY Id) rnk
FROM tbl_Values
)
SELECT
Id
,Code
,(SELECT TOP 1 Code FROM CTE a WHERE a.rnk =
(SELECT MAX(b.rnk) FROM CTE b WHERE b.rnk <= c.rnk AND b.Code IS NOT NULL)) Previous_NonNullCode
FROM CTE c