Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment joindre 2 requêtes avec un nombre différent d'enregistrements et de colonnes dans Oracle SQL ?

Pour obtenir le résultat final souhaité ...

... utiliser une jointure externe pour lier les enregistrements de congé pris aux autres tables. Cela donnera zéro time_duration pour les types de congés que l'employé n'a pas pris.

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 
       ;

Votre problème immédiat :

Votre vue a des références à une colonne EID bien qu'aucune de vos tables publiées n'ait une colonne de ce nom. De même, il y a confusion entre Time_Duration et time_period .

Plus généralement, vous trouverez la vie beaucoup plus facile si vous utilisez exactement le même nom pour les colonnes communes (c'est-à-dire que vous utilisez systématiquement soit employee_id ou employeeid , ne coupez pas et ne changez pas).