Pour obtenir le résultat final souhaité ...
... utiliser une jointure externe pour lier les enregistrements de congé pris aux autres tables. Cela donnera zéro time_duration
pour les types de congés que l'employé n'a pas pris.
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
;
Votre problème immédiat :
Votre vue a des références à une colonne EID
bien qu'aucune de vos tables publiées n'ait une colonne de ce nom. De même, il y a confusion entre Time_Duration
et time_period
.
Plus généralement, vous trouverez la vie beaucoup plus facile si vous utilisez exactement le même nom pour les colonnes communes (c'est-à-dire que vous utilisez systématiquement soit employee_id
ou employeeid
, ne coupez pas et ne changez pas).