Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie verbinde ich 2 Abfragen mit unterschiedlicher Anzahl von Datensätzen und Spalten in Oracle SQL?

Um die endgültige gewünschte Ausgabe zu erhalten ...

... Verwenden Sie einen Outer Join, um die Aufzeichnungen über genommenen Urlaub mit den anderen Tabellen zu verknüpfen. Dies ergibt null time_duration für Urlaubsarten, die der Mitarbeiter nicht genommen hat.

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 
       ;

Ihr unmittelbares Problem:

Ihre Ansicht enthält Verweise auf eine Spalte EID obwohl keine Ihrer geposteten Tabellen eine Spalte mit diesem Namen hat. Ebenso gibt es Verwirrung zwischen Time_Duration und time_period .

Im Allgemeinen werden Sie das Leben erheblich einfacher finden, wenn Sie für gemeinsame Spalten genau denselben Namen verwenden (d. h. verwenden Sie konsequent entweder employee_id oder employeeid , nicht hacken und ändern).