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