Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como juntar 2 consultas com número diferente de registros e colunas no oracle sql?


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