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

Preguntas similare

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



Respuesta Responder a este mensaje
#2 Matías
04/03/2005 - 15:43 | Informe spam
Gracias por responder, creo q la capte, pero ahora estoy en el trabajo y no
lo puedo probar, lo q no tengo bien en claro es si tengo que hacer un select
por cada dia y luego hacer UNION para cada uno de los select. ¿es así?

Saludos y gracias

"Maxi" escribió en el mensaje
news:
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
>
>
>


Respuesta Responder a este mensaje
#3 Maxi
04/03/2005 - 15:50 | Informe spam
Hola, noo, un union no, solo hace el left join para cada dia


Salu2
Maxi


"Matías" escribió en el mensaje
news:
Gracias por responder, creo q la capte, pero ahora estoy en el trabajo y
no
lo puedo probar, lo q no tengo bien en claro es si tengo que hacer un
select
por cada dia y luego hacer UNION para cada uno de los select. ¿es así?

Saludos y gracias

"Maxi" escribió en el mensaje
news:
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
>
>
>






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida