For at få det endelige ønskede output ...
... brug en ydre sammenføjning til at binde de taget orlov til de andre borde. Dette vil give nul time_duration
for orlovstyper, som medarbejderen ikke har afholdt.
select emp.Employee_ID
, le.leavetype
, le.leavebalance
, sum (el.Time_Duration) as total_Time_Duration
from employee emp
inner join leave_eligibility le
on le.department= emp.department
and le.designation= emp.designation
left outer join Employee_leave el
on el.EmployeeID = emp.Employee_ID
and el.leave_type = le.leavetype
group by emp.Employee_ID
, le.leavetype
, le.leavebalance
;
Dit umiddelbare problem:
Din visning har referencer til en kolonne EID
selvom ingen af dine opslåede tabeller har en kolonne med det navn. Ligeledes er der forvirring mellem Time_Duration
og time_period
.
Mere generelt vil du finde livet betydeligt lettere, hvis du bruger nøjagtig det samme navn til almindelige kolonner (dvs. konsekvent bruge enten employee_id
eller employeeid
, ikke hugge og ændre).