martes, 26 de junio de 2018
Generar Tabla de Calendarios y Calendarios x Empleado
Estimados,
En esta ocasión les dejare este pequeño ejemplo como yo realice un calendario y calendario empleado por temas de rrhh.
Slds
declare @Fecha datetime = '01/12/2018'
declare @ini datetime
declare @fin datetime
--primer dia del mes
SELECT @ini = DATEADD(mm, DATEDIFF(mm,0,@Fecha ), 0)
--ultimo dia del mes
SELECT @fin = dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,@Fecha )+1, 0));
declare @begdate as datetime
declare @enddate as datetime
declare @diff as int
declare @T_Fecha Table
(
Periodo varchar(10),
Annio int ,
Mes int ,
Fecha datetime ,
Feriado bit
)
set @begdate = (select cast( @ini as datetime) )
set @enddate = (select cast(@fin as datetime) )
set @diff = datediff(day, @begdate ,@enddate)
while (@begdate <= @enddate) --insertar el registro hasta que fecha inicio y fin sean iguales
begin
--insert into @T_Fecha values( ( cast( year(@begdate) as varchar)+ '-' + RIGHT( '00' + cast( month(@begdate) AS varchar), 2) ) , year(@begdate), month(@begdate), @begdate , 0)
insert into Calendario values( ( cast( year(@begdate) as varchar)+ '-' + RIGHT( '00' + cast( month(@begdate) AS varchar), 2) ) , year(@begdate), month(@begdate), @begdate , 0)
set @begdate = dateadd(day,1,@begdate) --vamos incrementando los días
end
select distinct Periodo from Calendario
select distinct idpersonal , Periodo from dbo.personal
left join Calendario on Calendario.Periodo=Calendario.Periodo
insert into EmpleadoCalendario
select distinct idpersonal , Periodo from dbo.personal
left join Calendario on Calendario.Periodo=Calendario.Periodo
select * from EmpleadoCalendario where idempleado = 3
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario