SQL Server - OMITIR NULOS AL EJECUTAR SELECT CON REF.CRUZADAS

 
Vista:

OMITIR NULOS AL EJECUTAR SELECT CON REF.CRUZADAS

Publicado por Robertux (12 intervenciones) el 10/08/2007 01:54:04
Tengo un select en el que hago algo como "referencias cruzadas" en donde tengo una tabla de horarios así:

dia hora
----------------------------------
1 16:00
2 20:00
3 15:00
4 07:00
5 14:00

y con un select como este:

select
case when dia=1 then hora else null end lunes,
case when dia=2 then hora else null end martes,
case when dia=3 then hora else null end miercoles,
case when dia=4 then hora else null end jueves,
case when dia=5 then hora else null end viernes,
from horarios

obtengo algo como

lunes martes miercoles jueves viernes
---------------------------------------------------------------------------
16:00 null null null null
null 20:00 null null null
null null 15:00 null null
null null null 07:00 null
null null null null 14:00

y solo quiero obtener algo como

lunes martes miercoles jueves viernes
---------------------------------------------------------------------------
16:00 20:00 15:00 07:00 14:00

como puedo hacerlo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:OMITIR NULOS AL EJECUTAR SELECT CON REF.CRUZADA

Publicado por Isaias (3308 intervenciones) el 10/08/2007 17:50:17
No se que tan eficiente sea, pero:

create table #dias (id int, horario char(5))
insert into #dias values(1, '16:00')
insert into #dias values(2, '20:00')
insert into #dias values(3, '15:00')
insert into #dias values(4, '07:00')
insert into #dias values(5, '14:00')

Select
Lunes = (SELECT ISNULL(horario,'') FROM #dias WHERE id = 1),
Martes = (SELECT ISNULL(horario,'') FROM #dias WHERE id = 2),
Miercoles = (SELECT ISNULL(horario,'') FROM #dias WHERE id = 3),
Jueves = (SELECT ISNULL(horario,'') FROM #dias WHERE id = 4),
Viernes = (SELECT ISNULL(horario,'') FROM #dias WHERE id = 5)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:OMITIR NULOS AL EJECUTAR SELECT CON REF.CRUZADA

Publicado por Robertux (2 intervenciones) el 10/08/2007 18:16:24
Gracias Isaias, me solucionó el problema, pero esto, que efectos puede tener en el servidor? al hacer varios subqueries en una misma consulta, no hace más lenta la consulta?

Saludos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:OMITIR NULOS AL EJECUTAR SELECT CON REF.CRUZADA

Publicado por Isaias (3308 intervenciones) el 13/08/2007 18:27:15
Eso podrias revisarlo activando tu PLAN DE EJECUCION y analizarlo, aunque ya hay gentes que han hecho un ananlisis sobre los SUBQUERIES vs INNER JOIN, Lee este articulo:

http://geeks.ms/blogs/ozonicco/archive/2006/10/03/Subqueries-vs-INNER-JOINs-.aspx
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:OMITIR NULOS AL EJECUTAR SELECT CON REF.CRUZADA

Publicado por Robertux (2 intervenciones) el 14/08/2007 00:25:00
Isaias, te agradezco muchisimo la ayuda. Ahora tengo otra duda sobre mi duda inicial

te platicaba que tengo algo como

dia hora
----------------------------------
1 16:00
2 20:00
3 15:00
4 07:00
5 14:00

pero si tengo algo como

dia hora
----------------------------------
1 16:00
2 20:00
3 15:00
4 07:00
5 14:00
1 11:00
2 10:00
3 09:00
4 08:00
5 12:00

al ejecutar el query me dice lo sgte:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

lo cual es pq ya estoy obtniendo más de un valor en los subqueries, y en ese caso debería obtener:

lunes martes miercoles jueves viernes
---------------------------------------------------------------------------
16:00 20:00 15:00 07:00 14:00
11:00 10:00 09:00 08:00 12:00
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:OMITIR NULOS AL EJECUTAR SELECT CON REF.CRUZADA

Publicado por Isaias (3308 intervenciones) el 14/08/2007 01:23:03
Sin ver tu query, te haria falta un DISTINCT
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:OMITIR NULOS AL EJECUTAR SELECT CON REF.CRUZADA

Publicado por Robertux (2 intervenciones) el 21/08/2007 02:26:33
no se puede enviar....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:OMITIR NULOS AL EJECUTAR SELECT CON REF.CRUZADA

Publicado por Robertux (2 intervenciones) el 21/08/2007 02:29:38
Isaias, no he podido hacer lo que me propones, quisiera ponerte el código de sql que me facilitaste pero no me deja enviar con el código incrustado en este mensaje, el explorador me dice que se ha reiniciado la conexión, no sé si se deba al contenido del mensaje o que pasa?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar