WLF_LEARNER_MULTI_COURSE_ARS_V
Details
-
Schema: FUSION
-
Object owner: WLF
-
Object type: VIEW
Columns
Name |
---|
COURSE_LEARNING_ITEM_ID LEARNING_ITEM_TYPE CLASS_LEARNING_ITEM_ID LEARNER_ID EVENT_TYPE ASSIGNMENT_RECORD_ID ASSIGNMENT_EFF_START_DATE ASSIGNMENT_EFF_END_DATE STATUS ASSIGNMENT_RECORD_COUNT ASSIGNMENT_RECORD_RANK |
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', 'ORA_ASSN_REC_PENDING_ACTIVE' ) 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) > assignmentrecords.assigned_on_date AND assignmentrecords.learner_id IS NOT NULL GROUP BY offeringitem.course_learning_item_id, assignmentrecords.learner_id HAVING COUNT(offeringitem.course_learning_item_id) > 1 ),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.last_update_date, assignmentrecords.status, DECODE(offeringitem.delivery_mode, 'ORA_ILT', 1, 'ORA_BLENDED', 2, 'ORA_SP', 3) delivery_mode, assignment_record_count, ( CASE WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT' AND assignmentrecords.status = 'ORA_ASSN_REC_REQUESTED' THEN 8 WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT' AND assignmentrecords.status = 'ORA_ASSN_REC_REQ_APPROVED' THEN 7 WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT' AND assignmentrecords.status = 'ORA_ASSN_REC_PENDING_PREREQ' THEN 6 WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT' AND assignmentrecords.status = 'ORA_ASSN_REC_WAITLISTED' THEN 5 WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT' AND assignmentrecords.status = 'ORA_ASSN_REC_PENDING_ACTIVE' THEN 4 WHEN assignmentrecords.event_type = 'ORA_REQUIRE_ASSIGNMENT' AND assignmentrecords.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 IS NULL OR 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 28 WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT' AND assignmentrecords.status = 'ORA_ASSN_REC_REQ_APPROVED' THEN 27 WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT' AND assignmentrecords.status = 'ORA_ASSN_REC_PENDING_PREREQ' THEN 26 WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT' AND assignmentrecords.status = 'ORA_ASSN_REC_WAITLISTED' THEN 25 WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT' AND assignmentrecords.status = 'ORA_ASSN_REC_PENDING_ACTIVE' THEN 24 WHEN assignmentrecords.event_type = 'ORA_JOIN_ASSIGNMENT' AND assignmentrecords.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 IS NULL OR assignmentrecords.sub_status IS NULL OR 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', 'ORA_ASSN_REC_PENDING_ACTIVE' ) 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) > assignmentrecords.assigned_on_date 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 ) SELECT course_learning_item_id, learning_item_type, class_learning_item_id, learner_id, event_type, assignment_record_id, assignment_eff_start_date, assignment_eff_end_date, status, assignment_record_count, assignment_record_rank FROM multi_course_ars WHERE course_learning_item_id NOT IN ( SELECT course_learning_item_id FROM multi_course_ars WHERE learner_id IS NOT NULL GROUP BY course_learning_item_id, learner_id HAVING ( MAX(event_type) = 'ORA_JOIN_ASSIGNMENT' AND MAX(assignment_record_rank) > 23 ) OR ( MIN(event_type) = 'ORA_REQUIRE_ASSIGNMENT' AND MAX(assignment_record_rank) > 3 ) ) ORDER BY course_learning_item_id, learner_id, assignment_record_rank, delivery_mode, last_update_date DESC |