Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/02/2012, 23:05
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Consulta de relleno

Esta puede ser un forma de hacerlo

Código:
SQL> create global temporary table t1 (
  2  codigo number(8),
  3  valor number(8,2)
  4  )
  5  /
Table created.

SQL> create table tablaprueba (
  2  codigo number(8),
  3  valor number(8,2)
  4  )
  5  /
Table created.

SQL> insert into tablaprueba
  2  values (1,2.4)
  3  /
1 row created.

SQL> insert into tablaprueba
  2  values (3,4.6)
  3  /
1 row created.

SQL> insert into tablaprueba
  2  values (10,8.6)
  3  /
1 row created.

SQL> declare
  2   vCodigo number(8);
  3  begin
  4   for rec in (select
  5                codigo,
  6                nvl(lag(codigo,1,null) over (order by codigo desc),codigo+1) cod_ant,
  7                valor
  8                from tablaprueba order by codigo) loop
  9    vCodigo := rec.codigo;
 10    while (vCodigo < rec.cod_ant) loop
 11     insert into t1 values (vCodigo, rec.valor);
 12     vcodigo := vcodigo + 1;
 13    end loop;
 14   end loop;
 15  end;
 16  /
PL/SQL procedure successfully completed.

SQL> select * from t1
  2  /
    CODIGO      VALOR
---------- ----------
         1        2.4
         2        2.4
         3        4.6
         4        4.6
         5        4.6
         6        4.6
         7        4.6
         8        4.6
         9        4.6
        10        8.6

10 rows selected.
Saludos