sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo unir 2 consultas con diferente número de registros y columnas en Oracle sql?

Para obtener el resultado final deseado...

... use una combinación externa para vincular los registros de licencia tomada a las otras tablas. Esto dará cero time_duration para tipos de licencia que el empleado no ha tomado.

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 
       ;

Su problema inmediato:

Su vista tiene referencias a una columna EID aunque ninguna de sus tablas publicadas tiene una columna con ese nombre. Asimismo, existe confusión entre Time_Duration y time_period .

De manera más general, encontrará la vida considerablemente más fácil si usa exactamente el mismo nombre para las columnas comunes (es decir, usa consistentemente employee_id o employeeid , no picar y cambiar).