Я хочу использовать запрос объединения в CTE между двумя таблицами EmployeeDetails
и MachineAttendance
, но я запутался - как он будет использоваться?
;With CTE As
(
select ed.EmpName
from EmployeeDetails ed
)
,cte1; AS
(
select
ma.EmpID, cast(MA.Datetime as Date) as [Date],
case when MA.INOUT = 1 then DateTime end as INOUT_INTIME,
case when MA.INOUT = 2 then DateTime end as INOUT_OUTTIME
from
MachineAttendance MA
), cte2 as
(
select
EmpID, [Date],
MAX(INOUT_INTIME) AS INTIME,
MAX(INOUT_OUTTIME) AS OUTTIME,
DATEDIFF(Hour, MAX(INOUT_INTIME), MAX(INOUT_OUTTIME)) as [Hours]
from
CTE1
group by
EmpID, [Date]
)
select
EmpID, [Date], INTIME, OUTTIME, [Hours],
case
when [Hours] >= 8 then 1
when [Hours] = 0 then 0
when [Hours] >= 6 then 0.5
end as [Day],
case
when [Hours] > 8 then [Hours] - 8
else 0
end as OT,
case
when [Hours] >= 8
then ([Hours] - 8) * 100 else 0
end as OTAMount,
Convert(varchar(10), Date, 120) as [Date],
Convert(varchar(10), INTIME, 108) as [Time],
Case
When Convert(Time, INTIME, 108) > '09:10'
Then 1 else 0
end as Late
from
cte2
inner join
cte On cte.EmpID = cte2.EmpID`