sql >> Database >  >> RDS >> Oracle

Hoe voeg ik 2 queries toe met een verschillend aantal records en kolommen in Oracle SQL?

Om de uiteindelijke gewenste uitvoer te krijgen ...

... gebruik een outer join om de records voor opgenomen verlof te koppelen aan de andere tabellen. Dit geeft nul time_duration voor verlofsoorten die de werknemer niet heeft opgenomen.

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 
       ;

Uw directe probleem:

Uw weergave bevat verwijzingen naar een kolom EID hoewel geen van uw geposte tabellen een kolom met die naam heeft. Evenzo is er verwarring tussen Time_Duration en time_period .

Meer in het algemeen zult u het leven aanzienlijk gemakkelijker vinden als u exact dezelfde naam gebruikt voor algemene kolommen (d.w.z. consequent gebruik maken van employee_id of employeeid , niet hakken en veranderen).



  1. Langzame OR-instructie in postgresql

  2. Bereken MD5-hash van een UTF8-tekenreeks

  3. sp_add_schedule vs sp_add_jobschedule in SQL Server:wat is het verschil?

  4. MySQL-lengte() versus char_length()