Para obter a saída final desejada ...
... use uma junção externa para vincular os registros de licença às outras tabelas. Isso resultará em zero
time_duration
para tipos de férias que o empregado não tirou. 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
;
Seu problema imediato:
Sua visualização tem referências a uma coluna
EID
embora nenhuma de suas tabelas postadas tenha uma coluna com esse nome. Da mesma forma, há confusão entre Time_Duration
e time_period
. De maneira mais geral, você achará a vida consideravelmente mais fácil se usar exatamente o mesmo nome para colunas comuns (ou seja, usar consistentemente
employee_id
ou employeeid
, não pique e troque).