select employee_id, first_name, last_name, department_id, job_id, hire_date, start_date, end_date, status from ( select employee_id, first_name, last_name, department_id, job_id, hire_date, (select max(end_date)+1 from job_history where employee_id = employees.employee_id) start_date, null end_date, 'aktuell' status, 1 zeit from employees union select h.employee_id, first_name, last_name, h.department_id, h.job_id, hire_date, start_date, end_date, 'historisch', 0 zeit from job_history h join employees e on h.employee_id = e.employee_id ) o where employee_id = 176 order by employee_id, zeit, start_date
select status, job_id, first_name, last_name, coalesce(start_date, (select max(end_date)+1 from job_history where employee_id = fe.employee_id), hire_date) start_date, end_date from ( SELECT 'H' status, employees.employee_id, JOB_HISTORY.job_id, EMPLOYEES.FIRST_NAME, EMPLOYEES.LAST_NAME, hire_date, start_date, end_date FROM EMPLOYEES , JOB_HISTORY WHERE ( (EMPLOYEES.EMPLOYEE_ID = JOB_HISTORY.EMPLOYEE_ID) ) union select 'A', employees.employee_id, job_id, first_name, last_name, hire_date, null, null from employees ) fe --where last_name = 'Kochhar' order by last_name, first_name, start_date
select * from ( select employee_id, FIRST_NAME, EMPLOYEES.LAST_NAME from employees minus SELECT JOB_HISTORY.EMPLOYEE_ID id, EMPLOYEES.FIRST_NAME fn, EMPLOYEES.LAST_NAME ln FROM JOB_HISTORY , EMPLOYEES WHERE ( (EMPLOYEES.EMPLOYEE_ID = JOB_HISTORY.EMPLOYEE_ID) ) ) --where id = 101 ---- select * from ( SELECT 0 sb, 'history', start_date, end_date, JOB_HISTORY.EMPLOYEE_ID id, EMPLOYEES.FIRST_NAME fn, EMPLOYEES.LAST_NAME ln, JOB_HISTORY.JOB_ID jid FROM JOB_HISTORY , EMPLOYEES WHERE (EMPLOYEES.EMPLOYEE_ID = JOB_HISTORY.EMPLOYEE_ID) and JOB_HISTORY.EMPLOYEE_ID = :b_eid union select 1 sb, 'jetzt', null, sysdate, employee_id, FIRST_NAME, EMPLOYEES.LAST_NAME, JOB_ID from employees where employee_id = :b_eid ) order by sb, end_date select sb, h, start_date, end_date, id, fn, ln, jid, prior jid from ( SELECT 0 sb, 'history' h, start_date, end_date, JOB_HISTORY.EMPLOYEE_ID id, EMPLOYEES.FIRST_NAME fn, EMPLOYEES.LAST_NAME ln, JOB_HISTORY.JOB_ID jid FROM JOB_HISTORY , EMPLOYEES WHERE (EMPLOYEES.EMPLOYEE_ID = JOB_HISTORY.EMPLOYEE_ID) and JOB_HISTORY.EMPLOYEE_ID = 101 union select 1 sb, 'jetzt', null, sysdate, employee_id, FIRST_NAME, EMPLOYEES.LAST_NAME, JOB_ID from employees where employee_id = 101 ) connect by PRIOR employee_id by sb, end_date
select employee_id as id, job_id, last_name, to_date(sysdate) from employees union select employee_id, job_id, to_char(null), to_date(end_date) from job_history order by 1,3,4 desc
select first_name, last_name from employees where employee_id in ( select employee_id from employees where job_id = 'IT_PROG' union select employee_id from job_history where job_id = 'IT_PROG' ) ------ select first_name, last_name, stand, datum from employees, ( select employee_id, job_id, 'jetzt' stand, sysdate datum from employees where job_id = 'IT_PROG' union select employee_id, job_id, 'früher' stand, end_date datum from job_history where job_id = 'IT_PROG' ) history where history.employee_id = employees.employee_id
with history_union_employees as ( SELECT 1 h, EMPLOYEES.FIRST_NAME, EMPLOYEES.LAST_NAME, JOB_HISTORY.START_DATE, JOB_HISTORY.END_DATE, JOB_HISTORY.JOB_ID FROM JOB_HISTORY , EMPLOYEES WHERE ( (EMPLOYEES.EMPLOYEE_ID = JOB_HISTORY.EMPLOYEE_ID) ) union select 2 h, EMPLOYEES.FIRST_NAME, EMPLOYEES.LAST_NAME, null, null, job_id from employees where employee_id in (select employee_id from job_history) ) select first_name, last_name, start_date, end_date, job_title from history_union_employees h join jobs j on h.job_id = j.job_id order by last_name, nvl(end_date,sysdate)
select status, job_id, first_name, last_name, coalesce(start_date, (select max(end_date)+1 from job_history where employee_id = fe.employee_id), hire_date) start_date, end_date from ( SELECT 'H' status, employees.employee_id, JOB_HISTORY.job_id, EMPLOYEES.FIRST_NAME, EMPLOYEES.LAST_NAME, hire_date, start_date, end_date FROM EMPLOYEES , JOB_HISTORY WHERE ( (EMPLOYEES.EMPLOYEE_ID = JOB_HISTORY.EMPLOYEE_ID) ) union select 'A', employees.employee_id, job_id, first_name, last_name, hire_date, null, null from employees ) fe --where last_name = 'Kochhar' order by last_name, first_name, end_date