
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 = 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


0