Um die endgültige gewünschte Ausgabe zu erhalten ...
... Verwenden Sie einen Outer Join, um die Aufzeichnungen über genommenen Urlaub mit den anderen Tabellen zu verknüpfen. Dies ergibt null time_duration für Urlaubsarten, die der Mitarbeiter nicht genommen hat.
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
;
Ihr unmittelbares Problem:
Ihre Ansicht enthält Verweise auf eine Spalte EID obwohl keine Ihrer geposteten Tabellen eine Spalte mit diesem Namen hat. Ebenso gibt es Verwirrung zwischen Time_Duration und time_period .
Im Allgemeinen werden Sie das Leben erheblich einfacher finden, wenn Sie für gemeinsame Spalten genau denselben Namen verwenden (d. h. verwenden Sie konsequent entweder employee_id oder employeeid , nicht hacken und ändern).