Oracle11g 在下一列值中显示第一列值,直到遇到not null

Oracle11g 在下一列值中显示第一列值,直到遇到not null,oracle11g,Oracle11g,我有表格部分,包括第部分,第1部分,第2部分,第3部分,第4部分,第5部分,第6部分 表中包含如下数据: PART VOLUME_1 VOLUME_2 VOLUME_3 VOLUME_4 VOLUME_5 VOLUME_6 --------- -------- -------- -------- -------- -------- -------- camera 1500 0 0 0 3000

我有表格部分,包括第部分,第1部分,第2部分,第3部分,第4部分,第5部分,第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中实现这一点

感谢和问候


Lopa

因此,如果当前值为
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);
但是空值是否可能?如果可能,规则是否与零相同