Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да съединя 2 заявки с различен брой записи и колони в oracle sql?

За да получите крайния желан резултат ...

... използвайте външно съединение, за да свържете записите за взет отпуск с другите таблици. Това ще даде нула time_duration за видове отпуски, които служителят не е ползвал.

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 
       ;

Вашият непосредствен проблем:

Вашият изглед има препратки към колона EID въпреки че нито една от вашите публикувани таблици няма колона с това име. По същия начин има объркване между Time_Duration и time_period .

По-общо казано, ще откриете, че животът ви е значително по-лесен, ако използвате абсолютно същото име за общи колони (т.е. последователно използвайте или employee_id или employeeid , не нарязвайте и не променяйте).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Цикъл върху стойности, създаване на динамична заявка и добавяне към набор от резултати

  2. Обединяване на 3 таблици Oracle SQL

  3. Функция TO_DATE в ORACLE

  4. LDAP търсене с помощта на ODP.NET, управляван драйвер бета (Oracle.ManagedDataAccess.dll) се проваля в C# приложение

  5. Нееднозначна заявка за колона