WLF_CHECK_PMRY_OFFNG_ARS_V

Details

  • Schema: FUSION

  • Object owner: WLF

  • Object type: VIEW

Columns

Name

COURSE_ASSIGNMENT_REC_ID

CURRENT_PRIMARY_REC_ID

CORRECT_PRIMARY_REC_ID

EFFECTIVE_START_DATE

EFFECTIVE_END_DATE

Query

SQL_Statement

WITH multiple_assign_records AS (

SELECT

COUNT(offeringitem.course_learning_item_id) assignment_record_count,

offeringitem.course_learning_item_id,

assignmentrecords.learner_id

FROM

wlf_learning_items_f learningitem,

wlf_assignment_records_f assignmentrecords,

wlf_li_classes_f offeringitem

WHERE

learningitem.learning_item_type = 'ORA_CLASS'

AND assignmentrecords.status IN (

'ORA_ASSN_REC_REQUESTED',

'ORA_ASSN_REC_REQ_APPROVED',

'ORA_ASSN_REC_PENDING_PREREQ',

'ORA_ASSN_REC_WAITLISTED',

'ORA_ASSN_REC_PENDING_PAYMENT',

'ORA_ASSN_REC_ACTIVE',

'ORA_ASSN_REC_CONTENT_COMPLETE'

)

AND assignmentrecords.event_type IN (

'ORA_JOIN_ASSIGNMENT',

'ORA_REQUIRE_ASSIGNMENT'

)

AND learningitem.learning_item_id = assignmentrecords.learning_item_id

AND learningitem.learning_item_id = offeringitem.learning_item_id

AND trunc(SYSDATE) BETWEEN learningitem.effective_start_date AND learningitem.effective_end_date

AND trunc(SYSDATE) BETWEEN assignmentrecords.effective_start_date AND assignmentrecords.effective_end_date

AND trunc(SYSDATE) BETWEEN offeringitem.effective_start_date AND offeringitem.effective_end_date

AND trunc(SYSDATE) >= TRUNC(nvl(assignmentrecords.assigned_on_date, SYSDATE))

AND assignmentrecords.learner_id IS NOT NULL

GROUP BY

offeringitem.course_learning_item_id,

assignmentrecords.learner_id

),multi_course_ars AS (

SELECT

offeringitem.course_learning_item_id,

learningitem.learning_item_type,

offeringitem.learning_item_id class_learning_item_id,

assignmentrecords.learner_id,

assignmentrecords.event_type,

assignmentrecords.assignment_record_id,

assignmentrecords.effective_start_date assignment_eff_start_date,

assignmentrecords.effective_end_date assignment_eff_end_date,

assignmentrecords.status,

DECODE(offeringitem.delivery_mode, 'ORA_ILT', 1, 'ORA_BLENDED', 2, 'ORA_SP', 3) delivery_mode,

assignmentrecords.last_update_date,

assignmentrecords.assigned_on_date,

assignment_record_count,

(

CASE

WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_REQUESTED' THEN 9

WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_REQ_APPROVED' THEN 8

WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_PENDING_PREREQ'

AND assignmentrecords.sub_status = 'ORA_ASSN_REC_PENDING_PREREQ' THEN 7

WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_WAITLISTED'

AND assignmentrecords.sub_status = 'ORA_ASSN_REC_NOTSTARTED' THEN 6

WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_WAITLISTED'

AND assignmentrecords.sub_status = 'ORA_ASSN_REC_WAITLISTED' THEN 5

WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_PENDING_PAYMENT'

AND assignmentrecords.sub_status = 'ORA_ASSN_REC_NOTSTARTED' THEN 4

WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_PENDING_PAYMENT'

AND assignmentrecords.sub_status = 'ORA_ASSN_REC_PENDING_PAYMENT' THEN 3

WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_ACTIVE'

AND assignmentrecords.sub_status = 'ORA_ASSN_REC_NOTSTARTED' THEN (

SELECT

to_number(concat('2',concat('.', (

SELECT

TO_CHAR( (assignmentrecords.calculated_due_date) - DATE '1970-01-01') * (24 * 60 * 60 * 1000)

FROM

dual

) ) ) )

FROM

dual

)

WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_ACTIVE'

AND assignmentrecords.sub_status = 'ORA_ASSN_REC_INPROGRESS' THEN (

SELECT

to_number(concat('1',concat('.', (

SELECT

TO_CHAR( (assignmentrecords.calculated_due_date) - DATE '1970-01-01') * (24 * 60 * 60 * 1000)

FROM

dual

) ) ) )

FROM

dual

)

WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_CONTENT_COMPLETE' THEN (

SELECT

to_number(concat('0',concat('.', (

SELECT

TO_CHAR( (assignmentrecords.calculated_due_date) - DATE '1970-01-01') * (24 * 60 * 60 * 1000)

FROM

dual

) ) ) )

FROM

dual

)

WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_REQUESTED' THEN 29

WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_REQ_APPROVED' THEN 28

WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_PENDING_PREREQ'

AND assignmentrecords.sub_status = 'ORA_ASSN_REC_PENDING_PREREQ' THEN 27

WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_WAITLISTED'

AND assignmentrecords.sub_status = 'ORA_ASSN_REC_NOTSTARTED' THEN 26

WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_WAITLISTED'

AND assignmentrecords.sub_status = 'ORA_ASSN_REC_WAITLISTED' THEN 25

WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_PENDING_PAYMENT'

AND assignmentrecords.sub_status = 'ORA_ASSN_REC_NOTSTARTED' THEN 24

WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_PENDING_PAYMENT'

AND assignmentrecords.sub_status = 'ORA_ASSN_REC_PENDING_PAYMENT' THEN 23

WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_ACTIVE'

AND assignmentrecords.sub_status = 'ORA_ASSN_REC_NOTSTARTED' THEN (

SELECT

to_number(concat('22',concat('.', (

SELECT

TO_CHAR( (assignmentrecords.calculated_due_date) - DATE '1970-01-01') * (24 * 60 * 60 * 1000)

FROM

dual

) ) ) )

FROM

dual

)

WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_ACTIVE'

AND assignmentrecords.sub_status = 'ORA_ASSN_REC_INPROGRESS' THEN (

SELECT

to_number(concat('21',concat('.', (

SELECT

TO_CHAR( (assignmentrecords.calculated_due_date) - DATE '1970-01-01') * (24 * 60 * 60 * 1000)

FROM

dual

) ) ) )

FROM

dual

)

WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT'

AND assignmentrecords.status = 'ORA_ASSN_REC_CONTENT_COMPLETE' THEN (

SELECT

to_number(concat('20',concat('.', (

SELECT

TO_CHAR( (assignmentrecords.calculated_due_date) - DATE '1970-01-01') * (24 * 60 * 60 * 1000)

FROM

dual

) ) ) )

FROM

dual

)

END

) AS assignment_record_rank

FROM

wlf_learning_items_f learningitem,

wlf_li_classes_f offeringitem,

wlf_assignment_records_f assignmentrecords,

multiple_assign_records

WHERE

multiple_assign_records.course_learning_item_id = offeringitem.course_learning_item_id

AND assignmentrecords.learner_id = multiple_assign_records.learner_id

AND learningitem.learning_item_type = 'ORA_CLASS'

AND assignmentrecords.status IN (

'ORA_ASSN_REC_REQUESTED',

'ORA_ASSN_REC_REQ_APPROVED',

'ORA_ASSN_REC_PENDING_PREREQ',

'ORA_ASSN_REC_WAITLISTED',

'ORA_ASSN_REC_PENDING_PAYMENT',

'ORA_ASSN_REC_ACTIVE',

'ORA_ASSN_REC_CONTENT_COMPLETE'

)

AND assignmentrecords.event_type IN (

'ORA_JOIN_ASSIGNMENT',

'ORA_REQUIRE_ASSIGNMENT'

)

AND learningitem.learning_item_id = assignmentrecords.learning_item_id

AND learningitem.learning_item_id = offeringitem.learning_item_id

AND trunc(SYSDATE) BETWEEN learningitem.effective_start_date AND learningitem.effective_end_date

AND trunc(SYSDATE) BETWEEN assignmentrecords.effective_start_date AND assignmentrecords.effective_end_date

AND trunc(SYSDATE) BETWEEN offeringitem.effective_start_date AND offeringitem.effective_end_date

AND trunc(SYSDATE) >= TRUNC(nvl(assignmentrecords.assigned_on_date, SYSDATE))

AND assignmentrecords.learner_id IS NOT NULL

ORDER BY

offeringitem.course_learning_item_id,

assignmentrecords.learner_id,

assignment_record_rank,

delivery_mode,

assignmentrecords.last_update_date DESC

),

primary_offering_assignment AS (

SELECT

course_learning_item_id,

learning_item_type,

class_learning_item_id,

learner_id,

event_type,

assignment_record_id,

status,

assigned_on_date,

assignment_record_count,

assignment_record_rank,

MIN(rownum) OVER(

PARTITION BY course_learning_item_id,learner_id

ORDER BY

assignment_record_rank ASC,

delivery_mode ASC,

last_update_date DESC

) AS row_rank

FROM

multi_course_ars

), correct_primaries AS (

SELECT

course_assignment_rec_id,

current_primary_rec_id,

correct_primary_rec_id,

effective_start_date,

effective_end_date,

assigned_on_date,

assignment_record_rank,

row_number () OVER (

PARTITION BY course_assignment_rec_id

ORDER BY

assignment_record_rank,

assigned_on_date DESC NULLS LAST

) rnum

FROM

(

SELECT

courseofferingrelations.related_object_id AS course_assignment_rec_id,

(

CASE

WHEN courseofferingrelations.primary_flag = 'Y' THEN courseofferingrelations.assignment_record_id

WHEN NVL(courseofferingrelations.primary_flag, 'N') = 'N' THEN -1

END

) AS current_primary_rec_id,

(

CASE

WHEN (

(

primarycrsofferassignment.assignment_record_rank >= 0

AND primarycrsofferassignment.assignment_record_rank < 3

)

OR (

primarycrsofferassignment.assignment_record_rank >= 20

AND primarycrsofferassignment.assignment_record_rank < 23

)

) THEN nvl(primarycrsofferassignment.assignment_record_id,-1)

WHEN (

(

primarycrsofferassignment.assignment_record_rank >= 3

AND primarycrsofferassignment.assignment_record_rank < 20

)

OR ( primarycrsofferassignment.assignment_record_rank >= 23 )

) THEN -1

END

) AS correct_primary_rec_id,

courseofferingrelations.effective_start_date,

courseofferingrelations.effective_end_date,

primarycrsofferassignment.assigned_on_date,

primarycrsofferassignment.assignment_record_rank

FROM

primary_offering_assignment primarycrsofferassignment

INNER JOIN wlf_ar_relations_f courseofferingrelations ON primarycrsofferassignment.assignment_record_id = courseofferingrelations.assignment_record_id

AND trunc(SYSDATE) BETWEEN courseofferingrelations.effective_start_date AND courseofferingrelations.effective_end_date

)

WHERE

correct_primary_rec_id != current_primary_rec_id)

SELECT

course_assignment_rec_id,

current_primary_rec_id,

correct_primary_rec_id,

effective_start_date,

effective_end_date

FROM

correct_primaries

WHERE

rnum = 1