Uma opção é usar a Lista de valores em cascata e defina os itens anteriores como "Itens pai(s)". A consulta para cada item da lista de seleção subsequente removeria os valores escolhidos anteriormente, por exemplo
select subject_name d,
subject_id r
from subjects
where subject_id not in (:P1_FIRST_MAJOR, :P1_SECOND_MAJOR);
No entanto, por que você não usaria um Shuttle item em vez disso? Oferecer todas as disciplinas e deixar o aluno selecionar qualquer uma delas, simplesmente movendo-as da esquerda para a direita do item de transporte?