Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   consulta Calificaciones (https://www.clubdelphi.com/foros/showthread.php?t=72545)

elea 25-02-2011 02:24:20

consulta Calificaciones
 
Hola a todos!

Estoy haciendo reportes en Quick reports de boletas de calificaciones uso delphi 2010 y SQL server, mi problema es que tengo una tabla calificaciones y guardo una calificacion en ordinario y extraordinario con diferente id pero misma materia, necesito poder mostrar en una tupla el nombre de la materia y las dos calificaciones. mi tabla esta asi

Calificaciones
id
idalumno
idmateria
calificacion
tipoEvaluacion (aqui guardo Ordinario o Extraordinario, segun sea el caso


y quiero que en mi consulta se vea asi: ejemplo

id idmateria calificacionOrdinario calificacionExtra
1- 1---------5------------------- 7

Neftali [Germán.Estévez] 25-02-2011 12:26:06

Creo que el diseño que estás haciendo es incorrecto. Estás mezclando en 1 tabla cosas que deberías tener en 2.

Una tabla para alumnos y otra tabla para Calificaciones.

Si aun así decides tenerlo todo en una tabla, tal vez algo que te facilitaría el trabajo sería esto:

Calificaciones
id
idalumno
idmateria
calificacionOrdinaria
calificacionExtraordinaria

No me parece correcto pero al menos es mejor que el caso que tú propones ya que tienes 1 sólo registro por alumnos y materia y no repites esos datos en varios registros (cosa que te podría provocar incongruencias).

abelg 25-02-2011 16:09:33

Esto puede que sea lo que quieres.

Select distinct
idalumno,
idmateria,
CASE when tipoEvaluacion = 'Ordinaria' then calificacion else 0 end CalOrdinaria,
0 CalExtraOrdinaria
into #calificacion
from Calificacion
where tipoEvaluacion = 'Ordinaria'
union
Select distinct
idalumno,
idmateria,
0,
CASE when tipoEvaluacion = 'Extra Ordinaria' then calificacion else 0 end CalExtraOrdinaria
from Calificacion
where tipoEvaluacion = 'Extra Ordinaria'


Select
idalumno,
idmateria,
SUM(CalOrdinaria) CalOrdinaria,
SUM(CalExtraOrdinaria) CalExtraOrdinaria
from #calificacion
Group by idalumno,
idmateria

drop Table #calificacion

elea 25-02-2011 18:25:46

Gracias por sus respuestas y si tengo mas de una tabla uniendo, la solucion que encontre fue hacer un left join uniendo 2 veces la tabla calificaciones y con la condicion en el 1er caso que el tipo de evaluacion fuera Ordinario y el 2do extraordinario.

Saludos y de nuevo muxas gracias


La franja horaria es GMT +2. Ahora son las 23:41:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi