A ver si esto es lo que buscas:
Código SQL:
Ver originalCREATE TABLE #cursoalumno
(
idcurso INT,
idalumno INT
)
CREATE TABLE #examen
(
id INT,
nombre VARCHAR(20),
cursoid INT
)
CREATE TABLE #resultado
(
nota INT,
alumnoid INT,
examenid INT
)
DELETE FROM #cursoalumno
DELETE FROM #examen
DELETE FROM #resultado
INSERT INTO #cursoalumno VALUES ( 43 ,15)
INSERT INTO #cursoalumno VALUES (43, 12)
INSERT INTO #cursoalumno VALUES (43, 5)
INSERT INTO #cursoalumno VALUES (36, 16)
INSERT INTO #cursoalumno VALUES (36, 8)
INSERT INTO #examen VALUES (1, 'Examen1', 36)
INSERT INTO #examen VALUES (2,'Examen2', 43)
INSERT INTO #examen VALUES (3,'Examen3', 43)
INSERT INTO #examen VALUES (4,'Examen4', 43)
INSERT INTO #resultado VALUES ( 6, 15 ,4)
INSERT INTO #resultado VALUES (9, 5 ,4)
SELECT idcurso,nombre,SUM(aprobados) AS aprobados, SUM(reprobados) AS reprobados, SUM(presentaron) AS presentaron, SUM(faltantes) AS faltantes
FROM(
SELECT
idcurso,idalumno,nombre,CASE WHEN nota>=7 THEN COUNT(1) END AS aprobados,
CASE WHEN nota<7 THEN COUNT(1) END AS reprobados, COUNT(t3.alumnoid) presentaron,
CASE WHEN isnull(nota,0)=0 THEN COUNT(1) END AS faltantes
FROM #cursoalumno AS t1
LEFT JOIN #examen AS t2 ON (t1.idcurso=t2.cursoid)
LEFT JOIN #resultado AS t3 ON (t3.alumnoid=t1.idalumno AND t2.id=t3.examenid)
GROUP BY idcurso,idalumno,nombre,nota,t3.alumnoid
) t1 GROUP BY idcurso,nombre
saludos!