droguerman
26-05-2006, 20:28:55
Hola a todos tengo dos tablas temporales dentro de un procedimiento almacenado con los siguientes campos (los nombres han sido cambiados para proteger a los inocentes)
tabla Nota
alumno
curso
nota
tabla Estadistica
curso
matriculados
notaExcelente
notaRegular
notaDesaprobatoria
estos tres ultimos campos con valor inicial cero
para evitarme cursores o hacer tres updates y el count que es bastante lento se me ocurrió usar la sgte consulta
UPDATE Estadistica
SET matriculados = matriculados+1
, notaExcelente = notaExcelente + (CASE WHEN NOTA >8 THEN 1 ELSE 0 END),
notaRegular = notaRegular + (CASE WHEN NOTA BETWEEN 6 AND 8 THEN 1 ELSE 0 END), notaDesaprobatoria = notaDesaprobatoria + (CASE WHEN NOTA < 6 THEN 1 ELSE 0 END)
FROM Nota N WHERE N.curso = Estadistica.curso
el problema es que no funciona puesto que no ejecuta el update tantas veces como registros haya en la tabla Nota sino que la ejecuta tantas veces como registros haya en la tabla Estadistica, alguien sabe como puedo modificar el UPDATE para que ejecute x cada registro de nota?
tabla Nota
alumno
curso
nota
tabla Estadistica
curso
matriculados
notaExcelente
notaRegular
notaDesaprobatoria
estos tres ultimos campos con valor inicial cero
para evitarme cursores o hacer tres updates y el count que es bastante lento se me ocurrió usar la sgte consulta
UPDATE Estadistica
SET matriculados = matriculados+1
, notaExcelente = notaExcelente + (CASE WHEN NOTA >8 THEN 1 ELSE 0 END),
notaRegular = notaRegular + (CASE WHEN NOTA BETWEEN 6 AND 8 THEN 1 ELSE 0 END), notaDesaprobatoria = notaDesaprobatoria + (CASE WHEN NOTA < 6 THEN 1 ELSE 0 END)
FROM Nota N WHERE N.curso = Estadistica.curso
el problema es que no funciona puesto que no ejecuta el update tantas veces como registros haya en la tabla Nota sino que la ejecuta tantas veces como registros haya en la tabla Estadistica, alguien sabe como puedo modificar el UPDATE para que ejecute x cada registro de nota?