Aby uzyskać ostateczny pożądany wynik ...
... użyj sprzężenia zewnętrznego, aby powiązać rekordy wykorzystanego urlopu z innymi tabelami. To da zerowy time_duration
dla rodzajów urlopów, z których pracownik nie skorzystał.
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
;
Twój najpilniejszy problem:
Twój widok zawiera odniesienia do kolumny EID
chociaż żadna z opublikowanych tabel nie ma kolumny o tej nazwie. Podobnie jest zamieszanie między Time_Duration
i time_period
.
Ogólnie rzecz biorąc, życie będzie znacznie łatwiejsze, jeśli użyjesz dokładnie tej samej nazwy dla wspólnych kolumn (tj. konsekwentnie użyj employee_id
lub employeeid
, nie siekaj i nie zmieniaj).