Представьте себе следующий набор данных.(Это не та же самая проблема, над которой я работаю, но это просто простой пример, который демонстрирует требование)
Student ID, Course ID
S1 C1
S1 C2
S1 C3
S2 C1
S2 C3
S3 C1
S3 C2
В указанном выше наборе данных каждый студент зарегистрирован под номером курса.Я хочу выяснить, какие студенты принимают все причины в этой таблице.
Так что, если я использую ключевое слово INTERSECT, оно будет выглядеть следующим образом.
SELECT student_id FROM <table> where course_id = 'C1'
INTERSECT
SELECT student_id FROM <table> where course_id = 'C2'
INTERSECT
SELECT student_id FROM <table> where course_id = 'C3'
Очевидно, что эта работа, только если списоккурсов являются фиксированными.
Есть ли способ сделать это, если список курсов является динамическим и использует только SQL.
Я мог бы написать функцию PLSQL для этого.Но тогда для каждого уникального идентификатора курса будет выполняться курсор, а пересечение будет выполняться с помощью кода PLSQL.
Я смотрю, возможно ли разгрузить как можно большую часть в движок SQL (возможно, с использованием аналитических функций), так как набор данных может быть большим.