Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   problemas con union y group (https://www.clubdelphi.com/foros/showthread.php?t=55553)

zajoma 20-04-2008 11:27:35

problemas con union y group
 
Hola a todos:

Trabajo en Delphi 7 y tablas paradox. Estoy intentando hacer la consulta que os describo más abajo. El problema es que si agrupo la consulta falla. La pregunta es cómo puedo agrupar el número de paquetes que se produce en cada turno por la fecha de producción. Os doy las gracias por adelantado.

un Saludo.
Código SQL [-]
 
select FechaProd, Count(*) as Turno1, 0 as Turno2, 0 as Turno3 from paquetes
where ( HoraProd between '06:00' and '14:15' )
group by FechaProd
union
select FechaProd, 0 as Turno1, Count(*) as Turno2, 0 as Turno3 from paquetes
where ( HoraProd between '14:15' and '22:30' )
group by FechaProd
union
select FechaProd, 0 as Turno1, 0 as Turno2, Count(*) as Turno3 from paquetes
where ( HoraProd >= '22:30' ) and ( HoraProd < '06:00' )
group by FechaProd

kuan-yiu 21-04-2008 09:14:22

¿Falla? ¿Qué falla? ¿Qué te dice exactamente? ¿O es que no da los resultados correctamente?

hecospina 21-04-2008 15:32:06

Hola
Yo tenia unos problemas semejantes y el problema era el tipo de dato, cuando se utiliza union se debe tener un mismo tipo de dato para cada una de las columnas
si tu error era time mismash in expresion esto te ayudara, aunque el tipo de dato podria ser INT u el que tu prefieras

Código SQL [-]
select FechaProd, CAST(Count(*)  AS NUMERIC(12,2) as Turno1, CAST(0  AS NUMERIC(12,2) as Turno2, CAST(0  AS NUMERIC(12,2) as Turno3 from paquetes
where ( HoraProd between '06:00' and '14:15' )
group by FechaProd
union
select FechaProd, CAST(0  AS NUMERIC(12,2) as Turno1, CAST(Count(*)  AS NUMERIC(12,2) as Turno2, cast(0  AS NUMERIC(12,2) as Turno3 from paquetes
where ( HoraProd between '14:15' and '22:30' )
group by FechaProd
union
select FechaProd, cast(0  AS NUMERIC(12,2)  as Turno1, cast(0  AS NUMERIC(12,2)  as Turno2, cast(Count(*)  AS NUMERIC(12,2)  as Turno3 from paquetes
where ( HoraProd >= '22:30' ) and ( HoraProd < '06:00' )
group by FechaProd

supongo que este SQL analiza la produccion del turno de la noche
Código SQL [-]
select FechaProd, cast(0  AS NUMERIC(12,2)  as Turno1, cast(0  AS NUMERIC(12,2)  as Turno2, cast(Count(*)  AS NUMERIC(12,2)  as Turno3 from paquetes
where ( HoraProd >= '22:30' ) and ( HoraProd < '06:00' )
group by FechaProd

No se si te funcione com quieres el turno empieza en un dia y termina en otro !

Saludos

zajoma 24-04-2008 11:27:47

problemas con union y group
 
Gracias esa era la solución y en cuanto al tercer turno también es cierto.


La franja horaria es GMT +2. Ahora son las 10:34:37.

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