gmocamilotd
7/19/2019 - 3:28 PM

la consulta de asistencia del sistema de victor, mysql

sistema de victor

set @fechainicio = '2019-07-01';
set @fechafin = '2019-08-31';
select zca.grupo, zca.categoria, p.apellidos, p.nombres, d.* 
from personal p
inner join (
select 
	a.IdPersonal,
   	year(a.fecha) as anyo,
            month(a.fecha) as nromes, a.orden,
		    max( case when DAY(a.fecha) = 1 then a.Hora else '' end ) as d01,
    		max( case when DAY(a.fecha) = 2 then a.Hora else '' end ) as d02,
		    max( case when DAY(a.fecha) = 3 then a.Hora else '' end ) as d03,
		    max( case when DAY(a.fecha) = 4 then a.Hora else '' end ) as d04,
		    max( case when DAY(a.fecha) = 5 then a.Hora else '' end ) as d05,
		    max( case when DAY(a.fecha) = 6 then a.Hora else '' end ) as d06,
		    max( case when DAY(a.fecha) = 7 then a.Hora else '' end ) as d07,
		    max( case when DAY(a.fecha) = 8 then a.Hora else '' end ) as d08,
		    max( case when DAY(a.fecha) = 9 then a.Hora else '' end ) as d09,
		    max( case when DAY(a.fecha) = 10 then a.Hora else '' end ) as d10,
		    max( case when DAY(a.fecha) = 11 then a.Hora else '' end ) as d11,
		    max( case when DAY(a.fecha) = 12 then a.Hora else '' end ) as d12,
		    max( case when DAY(a.fecha) = 13 then a.Hora else '' end ) as d13,
		    max( case when DAY(a.fecha) = 14 then a.Hora else '' end ) as d14,
		    max( case when DAY(a.fecha) = 15 then a.Hora else '' end ) as d15,
		    max( case when DAY(a.fecha) = 16 then a.Hora else '' end ) as d16,
		    max( case when DAY(a.fecha) = 17 then a.Hora else '' end ) as d17,
		    max( case when DAY(a.fecha) = 18 then a.Hora else '' end ) as d18,
		    max( case when DAY(a.fecha) = 19 then a.Hora else '' end ) as d19,
		    max( case when DAY(a.fecha) = 20 then a.Hora else '' end ) as d20,
		    max( case when DAY(a.fecha) = 21 then a.Hora else '' end ) as d21,
		    max( case when DAY(a.fecha) = 22 then a.Hora else '' end ) as d22,
		    max( case when DAY(a.fecha) = 23 then a.Hora else '' end ) as d23,
		    max( case when DAY(a.fecha) = 24 then a.Hora else '' end ) as d24,
		    max( case when DAY(a.fecha) = 25 then a.Hora else '' end ) as d25,
		    max( case when DAY(a.fecha) = 26 then a.Hora else '' end ) as d26,
		    max( case when DAY(a.fecha) = 27 then a.Hora else '' end ) as d27,
		    max( case when DAY(a.fecha) = 28 then a.Hora else '' end ) as d28,
		    max( case when DAY(a.fecha) = 29 then a.Hora else '' end ) as d29,
		    max( case when DAY(a.fecha) = 30 then a.Hora else '' end ) as d30,
		    max( case when DAY(a.fecha) = 31 then a.Hora else '' end ) as d31
from (
select 
 b.IdPersonal, b.fecha, 
@nm :=if( @fc=b.fecha,@nm +1, 1) as orden,
b.hora,
@fc := b.fecha as dummy
from marcacion b,
(select @nm:=0) as t1,
(select @fc:= '0-0-0' ) as t2,
zclasificacion clas,
zcategoria cat
where  clas.idcategoria = cat.idcategoria
and clas.idclasificado = b.idpersonal
and b.fecha between @fechainicio and @fechafin
and b.idtipomarcacion = 1
order by b.idpersonal,b.fecha, b.hora
) a
group by a.idpersonal, year(a.fecha),month(a.fecha), a.orden
order by a.fecha,a.idpersonal, a.orden
 ) d on p.idpersonal = d.idpersonal
inner join zclasificacion zcl on p.idpersonal = zcl.idclasificado
inner join zcategoria zca on zcl.idcategoria = zca.idcategoria
order by 1, 2 ,3 ,4, d.anyo, d.nromes, d.orden
al registrar al personal
en zcategoria los valores posibles
en zclasificacion la relacion con esa tabla
para que salgan en la consulta de victor