User Tools

Site Tools


kurs:sets_gruppenoperatoren

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
kurs:sets_gruppenoperatoren [2009/09/23 10:51]
mh
kurs:sets_gruppenoperatoren [2012/10/04 15:43]
mh
Line 1: Line 1:
 +<​code>​
 +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
 +</​code>​
 +
 +<​code>​
 + ​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
 +</​code>​
 +
 +<​code>​
 +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
 +</​code>​
 +
 +<​code>​
 +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
 +</​code>​
 +
 +<​code>​
 +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)
 +
 +</​code>​
 +
 +<​code>​
 +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
 +</​code>​
  
kurs/sets_gruppenoperatoren.txt · Last modified: 2014/09/10 21:22 (external edit)