sql - How to get Previous Value for Null Values -
i have below data in table.
| id | feemodeid |name | amount| --------------------------------------------- | 1 | null | null | 20 | | 2 | 1 | quarter-1 | 5000 | | 3 | null | null | 2000 | | 4 | 2 | quarter-2 | 8000 | | 5 | null | null | 5000 | | 6 | null | null | 2000 | | 7 | 3 | quarter-3 | 6000 | | 8 | null | null | 4000 |
how write such query below output...
| id | feemodeid |name | amount| --------------------------------------------- | 1 | null | null | 20 | | 2 | 1 | quarter-1 | 5000 | | 3 | 1 | quarter-1 | 2000 | | 4 | 2 | quarter-2 | 8000 | | 5 | 2 | quarter-2 | 5000 | | 6 | 2 | quarter-2 | 2000 | | 7 | 3 | quarter-3 | 6000 | | 8 | 3 | quarter-3 | 4000 |
please try:
select a.id, isnull(a.feemodeid, x.feemodeid) feemodeid, isnull(a.name, x.name) name, a.amount tbl outer apply (select top 1 feemodeid, name tbl b b.id<a.id , b.amount not null , b.feemodeid not null , a.feemodeid null order id desc)x
or
select id, isnull(feemodeid, bfeemodeid) feemodeid, isnull(name, bname) name, amount from( select a.id , a.feemodeid, a.name, a.amount, b.id bid, b.feemodeid bfeemodeid, b.name bname, max(b.feemodeid) on (partition a.id) mx tbl left join tbl b on b.id<a.id , b.feemodeid not null )x bfeemodeid=mx or mx null
Comments
Post a Comment