SQL - Insertar Consultado la misma tabla dond insertas

 
Vista:
sin imagen de perfil

Insertar Consultado la misma tabla dond insertas

Publicado por anonymous (2 intervenciones) el 11/05/2016 17:51:30
Buenos Tardes.
En primer lugar me presento . Soy Jose Carlos un informático que esta aprendiendo a la vez que luchando con el mundo SQL y busco un poco vuestra ayuda.

Actualmente me he encotnrado una query que se demora muchisimo y estoy seguro que tiene q existir otra forma de realizarla. No obstante no consigo encontrarla.

La query en si es un Insert que en el where tiene una subquery para comprobar que no inserta dos veces lo mismo. He probado con group by y demas pero no consigo solucionar este "bucle" de insercion consulta insercion etc.

Os pongo la query .


I
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
INSERT  INTO TABLA_A ( RPC_PER_RES, RPC_COD_EST, RPC_COD_BASE, RPC_COD_RES,
        RPC_COD_PROD, RPC_COD_POLI, RPC_COD_COBE,
        RPC_NUM_HOM, RPC_RES_HOM, RPC_EDAD_HOM,
        RPC_OBS_STAT, RPC_COD_LOB, RPC_COD_CHANNEL, RPC_COD_CLASE, RPC_COD_SUN)
        SELECT periodo,     pEstado, 'COL', 'RK',
        decode(a.riesgo_principal,'ca','c', a.riesgo_principal),
         poliza, cobertura,
        COUNT(distinct GRUPO||IDOPERACION||nvl(NUMEROASEGURADO,0)||nvl(NUMEROCARGA,0)),
        sum(nvl(cap_inicuf,0)),
        sum(trunc(months_between(last_day(to_date(periodo,'yyyymm')),fechanac)/12))/count(*),
        'VALORES A' ,
        lineanegocio, canaldeventa, ideerr, CODINTEGRACION
        from  TABLAGRANDE a, MENSUAL h
        where periodo = pPeriodo
        AND NVL (aquienafecta, 'x') <> 'P'
        AND NVL(aju_afecto,0) = 0
        AND NVL(aju_exento,0) = 0
        AND EXISTS ( SELECT NULL
                 FROM temp_polizas iwf
                 WHERE iwf.lineanegocio != 5
                 AND iwf.poliza = h.poliza
                 AND iwf.periodocobro != 'U'
                 AND RIESGO != 'DG' )
        AND NOT EXISTS  (SELECT RPC_COD_POLI
                                        FROM TABLA_A
                                        WHERE RPC_PER_RES = pPeriodo
                                        AND RPC_COD_EST = pEstado
                                        AND RPC_COD_BASE = 'COL'
                                        AND RPC_COD_RES = 'RK'
                                        AND RPC_COD_PROD = producto
                                        AND RPC_COD_POLI = to_char(poliza)
                                        AND RPC_COD_COBE = to_char(cobertura) )
        AND add_months(h.hasta, nvl(PRIMAMESESDELTA,0)) >= LAST_DAY (TO_DATE (pPeriodo, 'yyyymm'))
        AND a.RIESGO = h.RIESGO
        group by periodo,
        decode(a.riesgo_principal,'ca','c', a.riesgo_principal),
        poliza, cobertura,
        lineanegocio, canaldeventa, ideerr, CODINTEGRACION ;



Muchas gracias de antemano por la ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Insertar Consultado la misma tabla dond insertas

Publicado por Isaias (1921 intervenciones) el 11/05/2016 19:07:13
Muy bien por presentarte, pero tambien presentados a tu motor de base de datos, ¿cual es?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Insertar Consultado la misma tabla dond insertas

Publicado por anonymous (2 intervenciones) el 11/05/2016 20:15:14
Es verdad Isaias.

Es un Oracle 10g .

Sorry por el olvido

Como interfaz de trabajo utilizo Toad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar