mi procedimiento almacenado es buscar el ultimo beneficio que una persona ( en este caso grupo) se le haya otorgado y esos guardar en la tabla temporal para luego seleccion de ahi el resultado.
les dejo mi procedimiento para que puedan guiarme y decirme en que estoy fallando
Código SQL:
Ver original
DECLARE @nro_cedide VARCHAR(20),@max_comprobante INT; BEGIN --SET NOCOUNT ON; DECLARE crsr_cedula cursor FOR SELECT so.nro_cedide FROM cij.JM_SOLICITUD so, cij.JM_CONFORMACION fo, cij.JM_INFORME_FINAL i, cij.jm_resultado re, cij.JM_BENEFICIO be WHERE so.id_solicitud= fo.id_solicitud AND fo.id_conformacion= i.id_conformacion AND i.id_informe= re.id_informe AND re.id_beneficio= be.id_beneficio AND i.estado='FIN' AND re.id_beneficio IN (4,5,6,8,9) IF @@error != 0 BEGIN raiserror 99999 'ERROR las cedulas de las personas con informes finalizados' END; --ABRIMOS CURSOR OPEN crsr_cedula; IF @@error != 0 BEGIN raiserror 99999 'ERROR al abrir el cursor pp' END --RECORREMOS EL CURSOR fetch NEXT FROM crsr_cedula INTO @nro_cedide IF @@fetch_status = -1 BEGIN raiserror 99999 ' Error al recorrer cursor[inicio]' END; while @@fetch_status = 0 BEGIN --recuperamos el ultimo comprobante afectado de la persona SELECT @max_comprobante = MAX(comprobante_pago) FROM cij.BENEFICIARIOS x, cij.BENEFICIARIOS_GRUPOS y, cij.COMPROBANTES_PAGOS z WHERE x.beneficiario = y.beneficiario AND y.beneficiario_grupo = z.beneficiario_grupo AND z.indicador_estado = 'VAL' AND x.cedula = @nro_cedide IF @@error != 0 BEGIN raiserror 99999 'Error al recuperar el maximo comprobante de la persona' END; IF @max_comprobante IS NOT NULL BEGIN CREATE TABLE #beneficios(cedula VARCHAR(20),nombre VARCHAR(70),fec_nac datetime,fec_ini datetime,fec_fin datetime,descripcion VARCHAR(70),resolucion VARCHAR(20)) INSERT INTO #beneficios SELECT a.cedula, a.nombre_completo, a.fecha_nacimiento, d.fecha_inicio, d.fecha_fin, e.descripcion concepto_asignacion,d.numero_resolucion FROM cij.BENEFICIARIOS a, cij.BENEFICIARIOS_GRUPOS b, cij.COMPROBANTES_PAGOS c, cij.COMPROBANTES_PAGOS_DETALLE d, cij.CONCEPTOS_ASIGNACIONES e WHERE a.beneficiario = b.beneficiario AND b.beneficiario_grupo = c.beneficiario_grupo AND c.comprobante_pago = d.comprobante_pago AND d.concepto_asignacion = e.concepto_asignacion AND d.indicador_tipo = 'CRE' AND c.comprobante_pago = @max_comprobante IF @@error != 0 BEGIN raiserror 99999 'Error al insertar en la tabla temporal' END; END; fetch NEXT FROM crsr_cedula INTO @nro_cedide END --CERRAMOS EL CURSOR close crsr_cedula deallocate crsr_cedula SELECT cedula,nombre,fec_nac,fec_ini,fec_fin,descripcion,resolucion FROM #beneficios; END
gracias