I'm trying to fill up columns containing NULL with the most recent NOT NULL
value from left to right. 

Example: 

Select 2, 1, null, null, 3 

Should be converted into 

2, 1, 1, 1, 3

 

The following query works but I wonder if there is an easier way for tables
with 50 or more columns: 

 

with a (c1, c2, c3, c4, c5) as (

values(2, 1, null::int, null::int, 3)

)

select 

c1,

coalesce (c2, c1) as c2, 

coalesce (c3, c2, c1) as c3,

coalesce (c4, c3, c2, c1) as c4,

coalesce (c5, c4, c3, c2, c1) as c5

from a

 

Thanks

Klaus

 

 

Reply via email to