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