
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
Muchas gracias de antemano por la ayuda
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 = pPeriodoAND NVL (aquienafecta, 'x') <> 'P'
AND NVL(aju_afecto,0) = 0
AND NVL(aju_exento,0) = 0
AND EXISTS ( SELECT NULLFROM 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_POLIFROM TABLA_A
WHERE RPC_PER_RES = pPeriodo AND RPC_COD_EST = pEstadoAND RPC_COD_BASE = 'COL'
AND RPC_COD_RES = 'RK'
AND RPC_COD_PROD = productoAND 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


0
