Oracle
 sql >> Database >  >> RDS >> Oracle

Come unire 2 query con un numero diverso di record e colonne in Oracle sql?

Per ottenere l'output finale desiderato...

... usa un outer join per legare i record delle ferie prese alle altre tabelle. Questo darà zero time_duration per tipi di congedo che il dipendente non ha usufruito.

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 
       ;

Il tuo problema immediato:

La tua vista ha riferimenti a una colonna EID sebbene nessuna delle tue tabelle pubblicate abbia una colonna con quel nome. Allo stesso modo c'è confusione tra Time_Duration e time_period .

Più in generale, troverai la vita molto più facile se usi lo stesso identico nome per le colonne comuni (ad esempio, usa costantemente employee_id o employeeid , non tagliare e cambiare).