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