Consulta derivada

04/03/2005 - 13:39 por Matías | Informe spam
Hola a todos gracias por su atención, tengo el suguiente SP:

SELECT DesHasHora,
CASE WHEN IdDia = 1 THEN Materia ELSE '' END AS Lunes,
CASE WHEN IdDia = 2 THEN Materia ELSE '' END AS Martes,
CASE WHEN IdDia = 3 THEN Materia ELSE '' END AS Miercoles,
CASE WHEN IdDia = 4 THEN Materia ELSE '' END AS Jueves,
CASE WHEN IdDia = 5 THEN Materia ELSE '' END AS Viernes,
CASE WHEN IdDia = 6 THEN Materia ELSE '' END AS Sabado,
CASE WHEN IdDia = 7 THEN Materia ELSE '' END AS Domingo
FROM
(
SELECT HC.Curso, H.DesHasHora, D.IdDia, D.Descripcion as Dia, M.Nombre as
Materia
FROM HorariosCursos HC
INNER JOIN DescHorarios H ON HC.IDHorario = H.IDHorario
INNER JOIN Materias M ON HC.IDMateria = M.IDMateria
INNER JOIN Dias D ON HC.IDDia = D.IDDia
WHERE HC.Curso = '1AM'
GROUP BY HC.Curso, H.DesHasHora, D.IdDia, D.Descripcion, M.Nombre
)
AS Horario


DesHasHora Lunes Martes
06:30 - 07:20 INGLES I
06:30 - 07:20 FISICA I
07:20 - 08:10 FISICA I
08:20 - 09:30 BIOLOGÍA I
08:20 - 09:30 FISICA I
09:30 - 10:20 BIOLOGÍA I
09:30 - 10:20 INGLES I

Pero lo que yo quiero es que me devuelva de esta forma(o sea agrupado por
DesHasHora) :

DesHasHora Lunes Martes
06:30 - 07:20 INGLES I FISICA I
07:20 - 08:10 FISICA I
08:20 - 09:30 BIOLOGÍA I FISICA I
09:30 - 10:20 BIOLOGÍA I INGLES I

Como podria hacerlo? Muchas gracias

Estructuras de las tablas usadas en la consulta:

MATERIAS DIAS DescHorarios
IDMateria IdDia IDHorario
Codigo Descripcion DesHasHora
Nombre Descripcion
 

Leer las respuestas

#1 Maxi
04/03/2005 - 14:12 | Informe spam
Hola, matias, si lo quieres asi vas a tener que hacer consultas derivadas
por cada dia, o sea

select t1.campos,t2.campos from (tu consulta) as t1 left join (tu consulta)
t2 y asi por cada dia

Se entiende?


Salu2
Maxi


"Matías" escribió en el mensaje
news:
Hola a todos gracias por su atención, tengo el suguiente SP:

SELECT DesHasHora,
CASE WHEN IdDia = 1 THEN Materia ELSE '' END AS Lunes,
CASE WHEN IdDia = 2 THEN Materia ELSE '' END AS Martes,
CASE WHEN IdDia = 3 THEN Materia ELSE '' END AS Miercoles,
CASE WHEN IdDia = 4 THEN Materia ELSE '' END AS Jueves,
CASE WHEN IdDia = 5 THEN Materia ELSE '' END AS Viernes,
CASE WHEN IdDia = 6 THEN Materia ELSE '' END AS Sabado,
CASE WHEN IdDia = 7 THEN Materia ELSE '' END AS Domingo
FROM
(
SELECT HC.Curso, H.DesHasHora, D.IdDia, D.Descripcion as Dia, M.Nombre as
Materia
FROM HorariosCursos HC
INNER JOIN DescHorarios H ON HC.IDHorario = H.IDHorario
INNER JOIN Materias M ON HC.IDMateria = M.IDMateria
INNER JOIN Dias D ON HC.IDDia = D.IDDia
WHERE HC.Curso = '1AM'
GROUP BY HC.Curso, H.DesHasHora, D.IdDia, D.Descripcion, M.Nombre
)
AS Horario


DesHasHora Lunes Martes
06:30 - 07:20 INGLES I
06:30 - 07:20 FISICA I
07:20 - 08:10 FISICA I
08:20 - 09:30 BIOLOGÍA I
08:20 - 09:30 FISICA I
09:30 - 10:20 BIOLOGÍA I
09:30 - 10:20 INGLES I

Pero lo que yo quiero es que me devuelva de esta forma(o sea agrupado por
DesHasHora) :

DesHasHora Lunes Martes
06:30 - 07:20 INGLES I FISICA I
07:20 - 08:10 FISICA I
08:20 - 09:30 BIOLOGÍA I FISICA I
09:30 - 10:20 BIOLOGÍA I INGLES I

Como podria hacerlo? Muchas gracias

Estructuras de las tablas usadas en la consulta:

MATERIAS DIAS DescHorarios
IDMateria IdDia IDHorario
Codigo Descripcion DesHasHora
Nombre Descripcion



Preguntas similares