Select 
        fc.rgn_id Codigo_Regional,  
        r.rgn_nombre Nombre_Regional,  
        fc.sed_id Codigo_Centro,  
        s.sed_nombre Nombre_Centro,  
        fc.sed_id  || ' - ' || s.sed_nombre DATOS_CENTRO,
        pf.prf_denominacion Programa_Formacion,  
        pf.prf_codigo Codigo_Programa_Formacion,  
        pf.prf_version Version_Programa,  
        decode(pf.prf_tipo_programa, 'T', 'TITULADA', 'COMPLEMENTARIA') Tipo_Programa,  
        nf.nfs_nombre Nivel_Formacion,  
        fc.fic_id Ficha,  
        decode(nvl(FiCoPr.Fic_Id, -1), -1, 'NO', 'SI') Ficha_Correctamente_Programada,    
        DECODE(fc.FIC_ESTADO,
          '1', 'Creada',
          '2', 'Personalizada',
          '3', 'Revisada',
          '4', 'Publicada',
          '5', 'En seleccion',
          '6', 'En matricula',
          '7', 'En ejecucion',
          '8', 'Terminada',
          '9', 'Cancelada',
          '10', 'Programada',
          '11', 'En Inscripcion',
          '12', 'Terminada por fecha',
          '13', 'Terminada por unificacion',
          '14', 'Inactivo Virtual') Estado_Ficha, 
        fc.fic_estado,  
        fc.fic_fch_registro Fecha_Creacion,  
        fc.fic_fch_inicializacion Fecha_Inicio,  
        trunc(fc.fic_fch_finalizacion) Fecha_Fin,  
        round(months_between(fc.fic_fch_finalizacion, fc.fic_fch_inicializacion), 0) Meses_Duracion, 
        count(ia.ing_id) Inscritos,  
        sum(decode(nvl(ia.ing_estado, -1), 1, 1, 0)) Pendientes,  
        sum(decode(nvl(ia.ing_estado, -1), 7, 1, 0)) Preinscritos,  
        sum(decode(nvl(ia.ing_estado, -1), 25, 1, 0)) Asignado,  
        sum(decode(nvl(ia.ing_estado, -1), 2, 1, 0)) Inscritos_1,  
        sum(decode(nvl(ia.ing_estado, -1), 3, 1, 0)) No_Admitidos,  
        sum(decode(nvl(ia.ing_estado, -1), 11, 1, 0)) Anulados_Inscripcion,  
        sum(decode(nvl(ia.ing_estado, -1), 9, 1, 0)) No_Seleccionados,  
        sum(decode(nvl(ia.ing_estado, -1), 8, 1, 0)) Seleccionados,  
        sum(decode(nvl(ia.ing_estado, -1), 14, 1, 0)) Convocados_Matricula,  
        sum(decode(nvl(ia.ing_estado, -1), 4, 1, 0)) Anulados_Matricula,  
        sum(decode(nvl(ia.ing_estado, -1), 18, 1, 0)) Cancelados,  
        sum(decode(nvl(ia.ing_estado, -1), 6, 1, 0)) Matriculados,  
        sum(decode(nvl(ia.ing_estado, -1), 22, 1, 0)) Cancelado_Academico,  
        sum(decode(nvl(ia.ing_estado, -1), 23, 1, 0)) Cancelado_Disciplinario,  
        sum(decode(nvl(ia.ing_estado, -1), 21, 1, 0)) Retiros_Voluntarios,  
        sum(decode(nvl(ia.ing_estado, -1), 20, 1, 0)) Aplazados,  
        sum(decode(nvl(ia.ing_estado, -1), 19, 1, 0)) Reprobados,  
        sum(decode(nvl(ia.ing_estado, -1), 16, 1, 0)) Certificados,  
        sum(decode(nvl(ia.ing_estado, -1), 17, 1, 0)) Trasladados,  
        sum(decode(nvl(ia.ing_estado, -1), 5, 1, 0)) Convocados_Inscripcion,  
        sum(decode(nvl(ia.ing_estado, -1), 10, 1, 0)) Ausentes_Inscripcion,  
        sum(decode(nvl(ia.ing_estado, -1), 12, 1, 0)) Convocados_Seleccion,  
        sum(decode(nvl(ia.ing_estado, -1), 13, 1, 0)) Ausentes_Seleccion,  
        sum(decode(nvl(ia.ing_estado, -1), 15, 1, 0)) Pendiente_Prueba_Offline,  
        sum(decode(nvl(ia.ing_estado, -1), 24, 1, 0)) Atipico_Inscripcion,  
        sum(decode(nvl(ia.ing_estado, -1), 26, 1, 0)) Pend_Preinscipcion_Virtual,  
        sum(decode(nvl(ia.ing_estado, -1), 27, 1, 0)) Pend_Prueba_Nivel,
        sum(case when nvl(ia.ing_estado, -1) not between 1 and 27 then 1 else 0 end) Otro_Estado_Inscripcion,  
        count(ra.rga_id) Matriculados_1, 
        sum(decode(nvl(ra.rga_estado, -1), 13, 1, 0)) En_Transito,  
        sum(decode(nvl(ra.rga_estado, -1), 7, 1, 0)) Formacion,  
        sum(decode(nvl(ra.rga_estado, -1), 8, 1, 0)) Induccion,  
        sum(decode(nvl(ra.rga_estado, -1), 4, 1, 0)) Condicionados,  
        sum(decode(nvl(ra.rga_estado, -1), 1, 1, 0)) Aplazados_1,  
        sum(decode(nvl(ra.rga_estado, -1), 6, 1, 0)) Retiros_Voluntarios_1,  
        sum(decode(nvl(ra.rga_estado, -1), 14, 1, 0)) Canc_Virt_Complementaria,  
        sum(decode(nvl(ra.rga_estado, -1), 15, 1, 0)) Desc_Virt_Complementaria,  
        sum(decode(nvl(ra.rga_estado, -1), 2, 1, 0)) Cancelados_1,  
        sum(decode(nvl(ra.rga_estado, -1), 5, 1, 0)) Reprobados_1,  
        sum(decode(nvl(ra.rga_estado, -1), 9, 1, 0)) No_Aptos,  
        sum(decode(nvl(ra.rga_estado, -1), 10, 1, 0)) Reingresado,  
        sum(decode(nvl(ra.rga_estado, -1), 12, 1, 0)) Por_Certificar,  
        sum(decode(nvl(ra.rga_estado, -1), 3, 1, 0)) Certificados_1,  
        sum(decode(nvl(ra.rga_estado, -1), 11, 1, 0)) Trasladados_1,  
        pers.tipo_documento,  
        pers.num_doc_identidad documento,  
        regexp_replace(trim(pers.asp_nombre || ' ' || pers.asp_primer_apellido || ' ' || pers.asp_segundo_apellido), '[ ][ ]+', ' ') Funcionario_Registro, 
        nvl(fp.flp_nombre, 'SIN FAMILIA') Familia_Programa, 
        pe.pre_nombre,  
        pf.PRF_DURACION_MAXIMA Druracion_p

      from 
        planformacion.ficha_caracterizacion fc  
        INNER join diseniocur.programa_formacion pf    on pf.prf_id = fc.prf_id  
        inner join catalogo.nivel_formacion nf    on nf.nfs_id = pf.nfs_id_ofrecido  
        inner join catalogo.regional r    on r.rgn_id = fc.rgn_id  
        inner join catalogo.sede s    on s.sed_id = fc.sed_id  
        left outer join ( Select fdg.fic_id from reporte.fichas_datos_generales fdg where fdg.fuente = 1 and fdg.hif_prog_ok = '1') FiCoPr    on FiCoPr.Fic_Id = fc.fic_id  
        left outer join inscripcion.ingreso_aspirante ia    on ia.fic_id = fc.fic_id  
        left outer join inscripcion.segunda_opcion seop    on seop.ing_id_segunda_opc = ia.ing_id  
        left outer join matricula.registro_academico ra    on ra.ing_id = ia.ing_id  
        left outer join comun.aspirante_vw pers    on pers.nis = fc.nis_fun_registro  
        left outer join diseniocur.familias_programa fp    on fp.flp_id = pf.flp_id  
        left outer join planformacion.PREXFIC pxf on pxf.fic_id = fc.fic_id  
        left outer join planformacion.programa_especial pe on pe.pre_id = pxf.pre_id  

      where    
        fc.fic_mod_formacion in ('A','V')  
        and trunc(fc.fic_fch_inicializacion) >=       to_date('01/01/2025', 'dd/mm/yyyy')  
        AND pf.prf_tipo_programa = 'C'
        --and fc.fic_id = 3337385
        and fc.NFS_ID_OFRECIDO in (11) --Identificador de nivel de formacisn ofrecido por la ficha de caracterizacisn que viene del programa de formacisn. Tabla referenciada NIVEL_FORMACION.
        and seop.ing_id_segunda_opc is null  

      group by  
        fc.rgn_id, r.rgn_nombre, fc.sed_id, s.sed_nombre, pf.prf_denominacion, pf.prf_codigo,fc.fic_estado, pf.prf_version, decode(pf.prf_tipo_programa, 'T', 'TITULADA', 'COMPLEMENTARIA'),  
        nf.nfs_nombre, fc.fic_id, decode(nvl(FiCoPr.Fic_Id, -1), -1, 'NO', 'SI'), fc.fic_estado, fc.fic_fch_registro, fc.fic_fch_inicializacion, trunc(fc.fic_fch_finalizacion),  
        round(months_between(fc.fic_fch_finalizacion, fc.fic_fch_inicializacion), 0),  
        pers.tipo_documento, pers.num_doc_identidad, regexp_replace(trim(pers.asp_nombre || ' ' || pers.asp_primer_apellido || ' ' || pers.asp_segundo_apellido), '[ ][ ]+', ' '),  
        nvl(fp.flp_nombre, 'SIN FAMILIA'),          pe.pre_nombre,PRF_DURACION_MAXIMA