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).