What about changing it to this?
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: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243:
SELECT porcentaje_obtenido, cra.codcurso codigoactividad, t3.login codigodiscente, CASE WHEN t3.cad_admitido IS NULL OR (t3.cad_admitido IS NOT NULL AND t3.login = t3.admitido) THEN CASE WHEN t3.porcentaje_obtenido >= t3.porcentaje THEN 1 ELSE 0 END ELSE 0 END constancia, NULL certificado, CASE WHEN ifl.codcargo IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '12', '30', '31' ) AND ifl.codentidad = 'MP' THEN 'Magistrados Ministerio Público' WHEN ifl.codcargo IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '12', '30', '31' ) AND ifl.codentidad = 'PJ' THEN 'Magistrados Poder Judicial' WHEN ifl.codcargo IN ('20', '23', '24', '25', '28', '29') THEN 'Auxiliares de Justicia' WHEN ifl.codcargo IN ('21', '26') THEN 'Asistente de Funcion Fiscal' WHEN ifl.codcargo is null THEN ( SELECT distinct(cu.nombrecargo) FROM reportemovimiento r, inscripcion.usuario u, inscripcion.cargousuario cu, distritojudicial dj WHERE r.obs IS NULL AND r.login = u.login AND r.codcurso = 2864 AND cu.codcargo = u.codcargo AND dj.coddistritojudicial = u.coddistritojudicial AND r.login = usu.login ) END cargoentidad, CASE WHEN ifl.codcargo IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '12', '30', '31' ) THEN 'Magistrado ' WHEN ifl.codcargo IN ('20', '21', '23', '24', '25', '26', '28', '29') THEN 'Auxiliar ' END || CASE ifl.codentidad WHEN 'MP' THEN 'Ministerio Público del Distrito ' || dju.nombredistritojudicial WHEN 'PJ' THEN 'Corte Superior de Justicia ' || dju.nombredistritojudicial ELSE 'Otros' END descripcioncargo, dju.nombredistritojudicial distritojudicial, CASE ifl.codentidad WHEN 'MP' THEN ' Ministerio Público ' WHEN 'PJ' THEN ' Corte Superior de Justicia ' END entidad, NULL notafinalcurso, 'REG' situaciondiscente FROM (SELECT t2.login, t2.codcurso, t2.cad_admitido, t2.admitido, t2.abreviaturacurso, t2.porcentaje, t2.codsede, SUM (duracion) duracion, SUM (asistencia) asistencia, 100 * TRUNC ((SUM (asistencia) / SUM (duracion)), 2) porcentaje_obtenido FROM (SELECT t.login, t.codcurso, t.cad_admitido, t.admitido, t.abreviaturacurso, t.porcentaje, t.codsede, t.codsesion, t.vez, t.inicio, t.FINAL, t.duracion, 0, MIN (fechaasistencia), MAX (fechaasistencia), CEIL (NVL ( ( (CASE WHEN MAX (fechaasistencia) > t.FINAL THEN t.FINAL ELSE MAX (fechaasistencia) END ) - (CASE WHEN MIN (fechaasistencia) < t.inicio THEN t.inicio ELSE MIN (fechaasistencia) END ) ) * 24 * 60, 0 ) ) asistencia FROM (SELECT dcp.login, dcp.codcurso, cad.codcurso cad_admitido, dcp2.login admitido, cur.abreviaturacurso, cur.porcentaje, can.codsede, dse.codsesion, dse.vez, rep.fechaasistencia, ses.fechasesion + (FLOOR (dse.horainicioreal / 100)) / 24 + MOD (dse.horainicioreal, 100) / (24 * 60) inicio, ses.fechasesion + (FLOOR (dse.horafinreal / 100)) / 24 + MOD (dse.horafinreal, 100) / (24 * 60) FINAL, 24 * 60 * ( ( ses.fechasesion + (FLOOR (dse.horafinreal / 100) ) / 24 + MOD (dse.horafinreal, 100) / (24 * 60) ) - ( ses.fechasesion + (FLOOR (dse.horainicioreal / 100 ) ) / 24 + MOD (dse.horainicioreal, 100) / (24 * 60) ) ) duracion, ses.fechasesion, dse.horainicioreal, dse.horafinreal, dse.flagactiva FROM inscripcion.sesionxcurso scu INNER JOIN inscripcion.curso cur ON scu.codcurso = cur.codcurso AND cur.abreviaturacurso = 'PAP10SNA06' AND cur.nombrecurso NOT LIKE 'ADMITIDOS%' INNER JOIN inscripcion.cursoxano can ON can.codcurso = cur.codcurso INNER JOIN inscripcion.sesion ses ON scu.codsesion = ses.codsesion INNER JOIN inscripcion.detallesesion dse ON scu.codcurso = dse.codcurso AND scu.codsesion = dse.codsesion LEFT JOIN inscripcion.discentexcursoxprograma dcp ON dcp.codcurso = scu.codcurso LEFT JOIN inscripcion.reportemovimiento rep ON rep.codcurso = dse.codcurso AND rep.codsesion = dse.codsesion AND rep.vez = dse.vez AND dcp.login = rep.login LEFT JOIN (SELECT can_adm.codcurso, cur_adm.abreviaturacurso, can_adm.codsede FROM inscripcion.curso cur_adm INNER JOIN inscripcion.cursoxano can_adm ON can_adm.codcurso = cur_adm.codcurso WHERE cur_adm.nombrecurso LIKE 'ADMITIDOS%') cad ON cur.abreviaturacurso = cad.abreviaturacurso AND ( can.codsede = cad.codsede OR ( can.codsede IN (7, 9, 19, 37) AND cad.codsede = 19 ) ) LEFT JOIN inscripcion.discentexcursoxprograma dcp2 ON dcp2.codcurso = cad.codcurso AND dcp2.login = dcp.login ORDER BY dcp.login, codsesion, vez, horainicioreal, horafinreal) t INNER JOIN (SELECT DISTINCT codcurso, login FROM inscripcion.reportemovimiento) asis ON asis.codcurso = t.codcurso AND asis.login = t.login GROUP BY t.login, t.codcurso, t.cad_admitido, t.admitido, t.abreviaturacurso, t.porcentaje, t.codsede, t.codsesion, t.vez, t.inicio, t.FINAL) t2 GROUP BY t2.login, t2.codcurso, t2.cad_admitido, t2.admitido, t2.abreviaturacurso, t2.porcentaje, t2.codsede) t3 INNER JOIN curso cra ON t3.abreviaturacurso = cra.abreviatura LEFT JOIN usuario usu ON usu.login = t3.login LEFT JOIN infolaboral ifl ON t3.login = ifl.login LEFT JOIN distritojudicial dju ON dju.coddistritojudicial = ifl.coddistritojudicial