Chcete-li získat konečný požadovaný výstup ...
... použít vnější spojení k propojení záznamů o dovolené s ostatními tabulkami. Výsledkem bude nula time_duration pro druhy dovolené, které zaměstnanec nevyčerpal.
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
;
Váš bezprostřední problém:
Vaše zobrazení obsahuje odkazy na sloupec EID ačkoli žádná z vašich odeslaných tabulek nemá sloupec s tímto názvem. Podobně dochází k záměně mezi Time_Duration a time_period .
Obecněji řečeno, život vám bude podstatně snazší, pokud použijete přesně stejný název pro běžné sloupce (tj. důsledně používejte buď employee_id nebo employeeid , nesekejte a neměňte).