Ayuda consulta

04/05/2004 - 11:16 por Miguel Tubia | Informe spam
Hola de nuevo,
hacia tiempo q no pasaba por aqui, pero parece q cuando vengo lo hago a
pares -(|:-)
Weno, me han pedido una consulta y no sé muy bien por donde cogerla... Antes
explico un poco la estructura de la tabla de donde la tengo q coger.
Sobre todo vamos a trabajar con dos campos de la tabla, hora y terapia.
Hora es un varchar(5) donde guarda una hora en formato 00:00, por ejemplo.
Esa hora se mete desde un programa en VB.
Terapia es un varchar(3), que tiene un código que son números (no sé pq lo
puesieron varchar, pero weno). Ese código luego, por otra tabla, se accede a
los datos de la terapia, pero esos datos no nos interesan en este caso, solo
el código.
Luego fecha es un campo datetime que guarda la fecha en formato 'dd/mm/aa'.
La consulta es la siguiente (menuda chapa les estoy soltando... ):
quieren una tabla dividida por franjas horarias: cada columna es una hora:
de 0 a 1, de 1 a 2, etc...
(es desde, sin incluir hasta incluida, es decir, la columna de 00:00 a 01:00
incliye las 01:00 pero sería no 00:00, sería a partir 00:00, a partir de
00:00:01 por así decirlo... no sé si me explico...).
Bueno, eso por las columnas. Luego quieren 3 filas. Cada fila es una
agrupacion de terapias: la primera agrupa de la terapia 399 a la 499 (no
inclusives), la segunda de la 499 a la 599 (no inclusives) y la tercera de
la 599 a la 999 (no inclusives tampoco).
Los datos que ha de sacar son, entre unas fechas, los servicios realizados
que cumplen esas condiciones. es un count, vamos. Para la primera celda de
todas, por ejemplo, hora 00:00 a 01:00, de la terapia en el rango 399-499,
nos dará todos los servicios dados en esas terapias en esas horas desde el 1
de enero hasta el 30 de abril.
Y eso es lo q me piden, no sé como lo verán...
Solo pido una pequeñas orientación de como lo puedo hacer... si viene con
algún ejemplo de como es mejor, no tiene pq ser sobre este caso, un ejemplo
cualquiera toy mu perdio este sql
Muchas gracias compañeros por su ayuda. Perdonen la chapa q les he pegado...

Un saludo
 

Leer las respuestas

#1 Miguel Tubia
04/05/2004 - 12:40 | Informe spam
Hola,
lo de coger las consultas agrupadas lo he hecho así:

select count(*),
'terapias'case
when terapia>399 and terapia<499 then 'Terapias de 399-499'
when terapia>499 and terapia<599 then 'Terapias de 499-599'
when terapia>599 and terapia<999 then 'Terapias de 599-999'
end
from diario
where fecha not in (select dia from festivos)
and datepart(dw,fecha) not in (1,7)
and fecha between '2004-01-12' and '2004-04-30'
and ((terapia>399 and terapia<499) or (terapia>499 and terapia<599) or
(terapia>599 and terapia<999))
group by
case
when terapia>399 and terapia<499 then 'Terapias de 399-499'
when terapia>499 and terapia<599 then 'Terapias de 499-599'
when terapia>599 and terapia<999 then 'Terapias de 599-999'
end

Eso creo q era lo fácil... ahora me queda hacerlo por horas... estoy
intentando hacerlo por partes.
Pero lo de las horas no sé como cogerlo muy bien... ¿alguna idea? Voy a
ponerme en ello a ver...
Un saludo

Preguntas similares