How to join 2 queries with different number of records and columns in oracle sql?

后端 未结 2 862
离开以前
离开以前 2021-01-29 07:56

I have three tables:

Employee_leave(EmployeeID,Time_Period,leave_type)  
Employee(EID,Department,Designation) 
 leave_eligibility(Department,Designation, LeaveTy         


        
2条回答
  •  北恋
    北恋 (楼主)
    2021-01-29 08:12

    To get the final desired output ...

    "For a record which is not present in output of query1, it should display 0 in final output. "

    ... use an outer join to tie the taken leave records to the other tables. This will give zero time_duration for leave types which the employee has not taken.

    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 
           ;
    

    Your immediate problem:

    I'm getting "%s: invalid identifier"

    Your view has references to a column EID although none of your posted tables have a column of that name. Likewise there is confusion between Time_Duration and time_period.

    More generally, you will find life considerably easier if you use the exact same name for common columns (i.e. consistently use either employee_id or employeeid, don't chop and change).

提交回复
热议问题