How to achieve the Assignment History from ORACLE SQL query
--Create a DB View as below, and refer this where ever you need
CREATE OR REPLACE FORCE VIEW ASSIGNMENT_HISTORY_V
(
PERSON_ID,
ASSIGNMENT_ID,
ASSIGNMENT_NUMBER,
EFFECTIVE_START_DATE,
ORGANIZATION_ID,
NEXT_ORGANIZATION_ID,
POSITION_ID,
NEXT_POSIT,
GRADE_ID,
NEXT_GRADE,
JOB_ID,
NEXT_JOB
)
AS
SELECT EFFECTIVE_START_DATE desc),
ASG_HIST."PERSON_ID",
ASG_HIST."ASSIGNMENT_ID",
ASG_HIST."ASSIGNMENT_NUMBER",
ASG_HIST."EFFECTIVE_START_DATE",
ASG_HIST."ORGANIZATION_ID",
ASG_HIST."NEXT_ORGANIZATION_ID",
ASG_HIST."POSITION_ID",
ASG_HIST."NEXT_POSIT",
ASG_HIST."GRADE_ID",
ASG_HIST."NEXT_GRADE",
ASG_HIST."JOB_ID",
ASG_HIST."NEXT_JOB"
FROM (SELECT pah.person_id,
pah.assignment_id,
pah.assignment_number,
pah.EFFECTIVE_START_DATE,
pah.ORGANIZATION_ID,
LEAD (organization_id, 1)
OVER (PARTITION BY PERSON_ID ORDER BY EFFECTIVE_START_DATE)
NEXT_ORGANIZATION_ID,
pah.position_id,
LEAD (pah.position_id, 1)
OVER (PARTITION BY PERSON_ID ORDER BY EFFECTIVE_START_DATE)
NEXT_POSIT,
PAH.GRADE_ID,
LEAD (GRADE_ID, 1)
OVER (PARTITION BY PERSON_ID ORDER BY EFFECTIVE_START_DATE)
NEXT_GRADE,
PAH.JOB_ID,
LEAD (JOB_ID, 1)
OVER (PARTITION BY PERSON_ID ORDER BY EFFECTIVE_START_DATE)
NEXT_JOB
FROM PER_ASSIGNMENT_HISTORY_VIEW pah
WHERE 1 = 1
) ASG_HIST
WHERE 1 = 1
AND ( NVL (NEXT_POSIT, '-99') <> position_id
OR NVL (NEXT_GRADE, '-99') <> GRADE_ID
OR NVL (NEXT_ORGANIZATION_ID, '-99') <> ORGANIZATION_ID
OR NVL (NEXT_JOB, '-99') <> JOB_ID)
ORDER BY ASG_HIST.EFFECTIVE_START_DATE;
CREATE OR REPLACE FORCE VIEW ASSIGNMENT_HISTORY_V
(
PERSON_ID,
ASSIGNMENT_ID,
ASSIGNMENT_NUMBER,
EFFECTIVE_START_DATE,
ORGANIZATION_ID,
NEXT_ORGANIZATION_ID,
POSITION_ID,
NEXT_POSIT,
GRADE_ID,
NEXT_GRADE,
JOB_ID,
NEXT_JOB
)
AS
SELECT EFFECTIVE_START_DATE desc),
ASG_HIST."PERSON_ID",
ASG_HIST."ASSIGNMENT_ID",
ASG_HIST."ASSIGNMENT_NUMBER",
ASG_HIST."EFFECTIVE_START_DATE",
ASG_HIST."ORGANIZATION_ID",
ASG_HIST."NEXT_ORGANIZATION_ID",
ASG_HIST."POSITION_ID",
ASG_HIST."NEXT_POSIT",
ASG_HIST."GRADE_ID",
ASG_HIST."NEXT_GRADE",
ASG_HIST."JOB_ID",
ASG_HIST."NEXT_JOB"
FROM (SELECT pah.person_id,
pah.assignment_id,
pah.assignment_number,
pah.EFFECTIVE_START_DATE,
pah.ORGANIZATION_ID,
LEAD (organization_id, 1)
OVER (PARTITION BY PERSON_ID ORDER BY EFFECTIVE_START_DATE)
NEXT_ORGANIZATION_ID,
pah.position_id,
LEAD (pah.position_id, 1)
OVER (PARTITION BY PERSON_ID ORDER BY EFFECTIVE_START_DATE)
NEXT_POSIT,
PAH.GRADE_ID,
LEAD (GRADE_ID, 1)
OVER (PARTITION BY PERSON_ID ORDER BY EFFECTIVE_START_DATE)
NEXT_GRADE,
PAH.JOB_ID,
LEAD (JOB_ID, 1)
OVER (PARTITION BY PERSON_ID ORDER BY EFFECTIVE_START_DATE)
NEXT_JOB
FROM PER_ASSIGNMENT_HISTORY_VIEW pah
WHERE 1 = 1
) ASG_HIST
WHERE 1 = 1
AND ( NVL (NEXT_POSIT, '-99') <> position_id
OR NVL (NEXT_GRADE, '-99') <> GRADE_ID
OR NVL (NEXT_ORGANIZATION_ID, '-99') <> ORGANIZATION_ID
OR NVL (NEXT_JOB, '-99') <> JOB_ID)
ORDER BY ASG_HIST.EFFECTIVE_START_DATE;
Comments
Post a Comment