Código SQL
[-]
SELECT
SUM( Case pa.cod_sexo when 'F' then 1 else 0 end ) as SF,
SUM( Case pa.cod_sexo when 'M' then 1 else 0 end ) as SM,
SUM( Case when (hc.edad >=0 and hc.edad<=18 and pa.cod_sexo='F') then 1 else 0 end) rangoF1,
SUM( Case when (hc.edad >18 and hc.edad<=35 and pa.cod_sexo='F') then 1 else 0 end) rangoF2,
SUM( Case when (hc.edad >35 and hc.edad<=49 and pa.cod_sexo='F') then 1 else 0 end) rangoF3,
SUM( Case when (hc.edad >=50 and hc.edad<=120 and pa.cod_sexo='F') then 1 else 0 end) rangoF4,
SUM( Case when (hc.edad >=0 and hc.edad<=18 and pa.cod_sexo='M') then 1 else 0 end) rangoM1,
SUM( Case when (hc.edad >18 and hc.edad<=35 and pa.cod_sexo='M') then 1 else 0 end) rangoM2,
SUM( Case when (hc.edad >35 and hc.edad<=49 and pa.cod_sexo='M') then 1 else 0 end) rangoM3,
SUM( Case when (hc.edad >=50 and hc.edad<=120 and pa.cod_sexo='M') then 1 else 0 end) rangoM4
FROM TBL_HC_OFTALMOLOGIA_ hc
LEFT JOIN tbl_pacientes_ pa ON pa.clave = hc.clv_paciente
LEFT JOIN tbl_diagnosticos_ di ON di.cod_diag = hc.cod_diag1
WHERE 1=1
AND (hc.estatus = 'A' )
AND (hc.cod_diag1>=:CodDiagIni) AND (hc.cod_diag1<=:CodDiagFin)
AND (pa.cod_entidad>=:CodEntidadIni) AND (pa.cod_entidad<=:CodEntidadFin)
AND (hc.fecha >= :fechaini AND hc.fecha <= :fechafin)
AND (hc.edad >= :EdadIni AND hc.edad <= :EdadFin)
AND (hc.tipo_edad >= :TipoEdadIni AND hc.tipo_edad <= :TipoEdadFin)
AND (pa.cod_sexo >= :GeneroIni AND pa.cod_sexo <= :GeneroFin)
AND (hc.clv_usuario >= :ProfesionalIni AND hc.clv_usuario <= :ProfesionalFin)
Yo creo que con esto basta, es en una consulta por aparte.
Al no tener que agrupar por los campos anteriores al SUM, directamente hará las sumas totales.
Le he sacado Group by y Order by no es necesario.
No lo he probado así que el Where hay que depurarlo un poco. En especial tengo dudas con los campos SF y SM, no estoy seguro si afectan a la sumatoria final o no.
Bien, me dirás como va la cosa.
Espero haber ayudado.
Saludos.