För att få det slutgiltiga önskade resultatet ...
... använd en yttre koppling för att binda de uttagna ledighetsposterna till de andra borden. Detta ger noll time_duration
för ledighetsformer som arbetstagaren inte tagit ut.
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
;
Ditt omedelbara problem:
Din vy har referenser till en kolumn EID
även om ingen av dina upplagda tabeller har en kolumn med det namnet. Likaså finns det förvirring mellan Time_Duration
och time_period
.
Mer generellt kommer du att uppleva livet betydligt lättare om du använder exakt samma namn för vanliga kolumner (dvs. använd konsekvent antingen employee_id
eller employeeid
, hugga inte och byt).