Eu preciso extrair pelo banco de dados SQL a quantidade de horas cursadas por aluno e por tipo de curso(presencial e online) e o total somando presencial e online , onde pego o campo da carga horaria do curso que está em decimal e tem usuarios que tem mais de 24 hs de horas cursada.
Estou utilizando o script abaixo mas acho que devido a muitos usuarios trem mais de 24 de horas p campo [TOTAL HORAS] não esta dando certo.
Alguém pode me ajudar?
SELECT
[STATUS ALUNO],
ALUNO,
CAST(LEFT(CONVERT(TIME, DATEADD(SECOND, ISNULL(CAST(SUM([HORAS PRESENCIAIS])*3600 AS INT), 0) + 86400000, 0), 108), 8) AS VARCHAR) [HORAS PRESENCIAIS],
CAST(LEFT(CONVERT(TIME, DATEADD(SECOND, ISNULL(CAST(SUM([HORAS EAD])*3600 AS INT), 0) + 86400000, 0), 108), 8) AS VARCHAR)[HORAS EAD],
CAST(LEFT(CONVERT(TIME, DATEADD(SECOND, ISNULL(CAST(SUM(HORAS)*3600 AS INT), 0) + 86400000, 0), 108), 8) AS VARCHAR) [TOTAL HORAS]
FROM (
SELECT
CASE WHEN U.STATUS = 'A' THEN 'ATIVO' ELSE 'INATIVO' END [STATUS ALUNO],
U.NOME ALUNO,
SUM(HORASPRESENCIAL.HORASPRESENCIAL1) [HORAS PRESENCIAIS],
SUM(HORAONLINE.HORAONLINE1) [HORAS EAD],
SUM(HORASPRESENCIAL.HORASPRESENCIAL1) + SUM(HORAONLINE.HORAONLINE1) [HORAS]
FROM SITUACAOALUNOCURSO SAC
INNER JOIN CURSOS C ON C.CODCURSO = SAC.CODCURSO
INNER JOIN TURMA T ON T.CODTURMA = SAC.CODTURMA
INNER JOIN USUARIOS U ON U.CODALUNO = SAC.CODALUNO
LEFT JOIN (SELECT SUM(CON.CARGAHORARIA) HORASPRESENCIAL1, CON.CODCURSO FROM CURSOS CON WHERE CON.CURSOPRESENCIAL ='S' GROUP BY CON.CARGAHORARIA,CON.CODCURSO) HORASPRESENCIAL ON HORASPRESENCIAL.CODCURSO = C.CODCURSO AND HORASPRESENCIAL.CODCURSO = SAC.CODCURSO
LEFT JOIN (SELECT SUM(CON.CARGAHORARIA) HORAONLINE1, CON.CODCURSO FROM CURSOS CON WHERE CON.CURSOPRESENCIAL <> 'S' GROUP BY CON.CARGAHORARIA,CON.CODCURSO) HORAONLINE ON HORAONLINE.CODCURSO = C.CODCURSO AND HORAONLINE.CODCURSO = SAC.CODCURSO
GROUP BY U.NOME, U.EMAIL, C.CARGAHORARIA, U.STATUS
) T
GROUP BY [STATUS ALUNO], ALUNO
ORDER BY [TOTAL HORAS]