Ver Mensaje Individual
  #14 (permalink)  
Antiguo 08/11/2013, 11:23
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 6 meses
Puntos: 774
Respuesta: Problema con Join en Procedimiento

A ver si esto es lo que buscas:

Código SQL:
Ver original
  1. CREATE TABLE #cursoalumno
  2. (
  3. idcurso INT,
  4. idalumno INT
  5. )
  6.  
  7. CREATE TABLE #examen
  8. (
  9. id INT,
  10. nombre VARCHAR(20),
  11. cursoid INT
  12. )
  13.  
  14. CREATE TABLE #resultado
  15. (
  16. nota INT,
  17. alumnoid INT,
  18. examenid INT
  19. )
  20.  
  21. DELETE FROM #cursoalumno
  22. DELETE FROM #examen
  23. DELETE FROM #resultado
  24.  
  25. INSERT INTO #cursoalumno VALUES ( 43 ,15)
  26. INSERT INTO #cursoalumno VALUES (43, 12)
  27. INSERT INTO #cursoalumno VALUES (43, 5)
  28. INSERT INTO #cursoalumno VALUES (36, 16)
  29. INSERT INTO #cursoalumno VALUES (36, 8)
  30.  
  31. INSERT INTO #examen VALUES  (1, 'Examen1', 36)
  32. INSERT INTO #examen VALUES  (2,'Examen2', 43)
  33. INSERT INTO #examen VALUES  (3,'Examen3', 43)
  34. INSERT INTO #examen VALUES  (4,'Examen4', 43)
  35.  
  36. INSERT INTO #resultado VALUES ( 6, 15 ,4)
  37. INSERT INTO #resultado VALUES (9, 5 ,4)
  38.  
  39.  
  40. SELECT idcurso,nombre,SUM(aprobados) AS aprobados, SUM(reprobados) AS reprobados, SUM(presentaron) AS presentaron, SUM(faltantes) AS faltantes
  41. FROM(
  42. SELECT  
  43. idcurso,idalumno,nombre,CASE WHEN nota>=7 THEN COUNT(1) END AS aprobados,
  44. CASE WHEN nota<7 THEN COUNT(1) END AS reprobados, COUNT(t3.alumnoid) presentaron,
  45. CASE WHEN isnull(nota,0)=0 THEN COUNT(1) END AS faltantes
  46. FROM #cursoalumno AS t1
  47. LEFT JOIN #examen AS t2 ON (t1.idcurso=t2.cursoid)
  48. LEFT JOIN #resultado AS t3 ON (t3.alumnoid=t1.idalumno AND t2.id=t3.examenid)
  49. GROUP BY idcurso,idalumno,nombre,nota,t3.alumnoid
  50. ) t1 GROUP BY idcurso,nombre

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me