Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Consulta de relleno

Estas en el tema de Consulta de relleno en el foro de Oracle en Foros del Web. Buenas quiero hacer una consulta contra oracle, ó plsql y llevo rato dándole vueltas. Tengo esta tabla tablaprueba Código Valor 1 2,4 3 4,6 10 ...
  #1 (permalink)  
Antiguo 08/02/2012, 05:00
Avatar de triqui  
Fecha de Ingreso: diciembre-2008
Ubicación: Zaragoza(España)
Mensajes: 624
Antigüedad: 15 años, 11 meses
Puntos: 31
Consulta de relleno

Buenas quiero hacer una consulta contra oracle, ó plsql y llevo rato dándole vueltas.

Tengo esta tabla tablaprueba


Código Valor
1 2,4
3 4,6
10 8,6

Quiero que la consulta me devuelva lo siguiente:

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


Es decir que me complete el valor con el mínimo encontrado, por supuesto esto es un ejemplo y los códigos son miles.

Gracias !
__________________
La nueva red social de quinielas quiniela resultados
Cazaresultados Futbol base en directo
  #2 (permalink)  
Antiguo 10/02/2012, 23:05
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años
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
  #3 (permalink)  
Antiguo 16/02/2012, 04:35
Avatar de triqui  
Fecha de Ingreso: diciembre-2008
Ubicación: Zaragoza(España)
Mensajes: 624
Antigüedad: 15 años, 11 meses
Puntos: 31
Respuesta: Consulta de relleno

Muchas gracias, perfecto
__________________
La nueva red social de quinielas quiniela resultados
Cazaresultados Futbol base en directo

Etiquetas: relleno, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:12.