2013-02-15 56 views
0

我有表part_volume與列部分,volume_1,volume_2,volume_3,volume_4,volume_5,volume_6列。在下一列值中顯示第一列值直到遇到非空

表中有數據,如:

PART  VOLUME_1 VOLUME_2 VOLUME_3 VOLUME_4 VOLUME_5 VOLUME_6    
--------- -------- -------- -------- -------- -------- -------- 
camera  1500  0  0  0  3000  0 

我想作爲

PART  VOLUME_1 VOLUME_2 VOLUME_3 VOLUME_4 VOLUME_5 VOLUME_6    
--------- -------- -------- -------- -------- -------- -------- 
camera  1500  1500  1500  1500  3000  3000  

顯示數據我怎樣才能在oracle中實現這一目標?

感謝和問候,

洛帕

回答

0

所以只要保持前值,如果當前值是0

如果是這樣:

select part, 
     volume_1, 
     coalesce(volume_2, volume_1) volume_2, 
     coalesce(volume_3, volume_2, volume_1) volume_3, 
     coalesce(volume_4, volume_3, volume_2, volume_1) volume_4, 
     coalesce(volume_5, volume_4, volume_3, volume_2, volume_1) volume_5, 
     coalesce(volume_6, volume_5, volume_4, volume_3, volume_2, volume_1) volume_6 
    from (select part, 
       volume_1, 
       case volume_2 when 0 then to_number(null) else volume_2 end volume_2, 
       case volume_3 when 0 then to_number(null) else volume_3 end volume_3, 
       case volume_4 when 0 then to_number(null) else volume_4 end volume_4, 
       case volume_5 when 0 then to_number(null) else volume_5 end volume_5, 
       case volume_6 when 0 then to_number(null) else volume_6 end volume_6 
      from data); 

是空值可能雖然如果是這樣,就是規則一樣零?

+0

謝謝。有效 – Snigdha 2013-02-15 13:07:08

相關問題