Insert into FTE (tkinit, Name, tklast, tkfirst,tktitle, tisort, tkemdate, tktmdate,
tkloc, ldesc,tkdept, head1, tkemail, tsection, tsectdes, Non_Person, Period, MTD_AVG_FTE, YTD_AVG_FTE)
SELECT timekeep.tkinit, timekeep.tkfirst+' '+timekeep.tklast Name, timekeep.tklast,
timekeep.tkfirst, timekeep.tktitle, title.tisort, timekeep.tkemdate, timekeep.tktmdate,
timekeep.tkloc, location.ldesc, timekeep.tkdept, deptlab.head1, timekeep.tkemail,
tsection.tsection, tsection.tsectdes,
case when udf.udvalue='Y' then 'Y' else 'N' end Non_Person,
max(YTD_FTE.Period) Period,
sum(case when YTD_FTE.YearMonth=convert(int,convert(varchar,year(dateadd("d",-day(getdate()),getdate())))+right('0'+convert(varchar,month(dateadd("d",-day(getdate()),getdate()))),2))
then (YTD_FTE.afte) else 0 end) MTD_AVG_FTE,
case when ( sum(month(YTD_FTE.enddate)-month(YTD_FTE.startdate)+1) )=0 then 0
else ( sum(YTD_FTE.afte*(month(YTD_FTE.enddate)-month(YTD_FTE.startdate)+1)) )/( sum(month(YTD_FTE.enddate)-month(YTD_FTE.startdate)+1) ) end YTD_AVG_FTE
FROM timekeep, title, location, deptlab, tsection, udf,
( select atkinit,afte, adate1,adate2,
case when year(adate1)=year(getdate())then adate1
else convert(smalldatetime,'01/01/'+convert(varchar,year(getdate()))) end startdate,
case when year(adate2)=year(getdate())then adate2 else getdate() end enddate,
convert(Int,case when year(adate2)=year(getdate())then
case when month(adate2)=month(getdate())
then convert(varchar,year(adate2))+right('0'+convert(varchar,month(adate2)-1),2)
else convert(varchar,year(adate2))+right('0'+convert(varchar,month(adate2)),2) end
else case when adate1 > dateadd(d,-day(getdate()),getdate())
then convert(varchar,year(getdate()))+right('0'+convert(varchar,month(getdate())),2)
else convert(varchar,year(getdate()))+right('0'+convert(varchar,month(getdate())-1),2) end
end) YearMonth,
convert(varchar,year(getdate()))+right('0'+convert(varchar,month(getdate())-1),2) Period
from accrate
group by atkinit,afte,adate1,adate2
having adate2 = (select max(tr2.adate2) from accrate tr2
where tr2.atkinit = accrate.atkinit and
tr2.adate1<=dateadd(dd,-1,convert(smalldatetime,dateadd(ms,-3,dateadd(mm,datediff(mm,0,getdate()),0))))
and year(tr2.adate2)=2025)
or adate2 = (select max(tr2.adate2)
from accrate tr2
where tr2.atkinit = accrate.atkinit and year(tr2.adate2)=year(getdate())
and tr2.adate2<=dateadd(dd,-1,convert(smalldatetime,dateadd(ms,-3,dateadd(mm,datediff(mm,0,getdate()),0))))) ) YTD_FTE
WHERE ( timekeep.tkloc=location.locode ) AND
( timekeep.tkdept=deptlab.delcode ) AND
( timekeep.tktitle=title.tititle ) AND
( timekeep.tkinit=udf.udjoin ) AND
( timekeep.tksect=tsection.tsection ) AND
( timekeep.tkinit*=YTD_FTE.atkinit ) AND
( udf.udfindex=5 )
GROUP BY timekeep.tkinit, timekeep.tkfirst+' '+timekeep.tklast,
timekeep.tklast, timekeep.tkfirst, timekeep.tktitle, title.tisort,
timekeep.tkemdate, timekeep.tktmdate, timekeep.tkloc, location.ldesc,
timekeep.tkdept, deptlab.head1, timekeep.tkemail, tsection.tsection,
tsection.tsectdes, case when udf.udvalue='Y' then 'Y' else 'N' end