Один (или оба) из этих подзапросов:
(select sem_code
from v_interstudata a
where a.stdcode=tt.stdcode
and a.startsem=tt.startsemdate) startsemester,
--
(select sem_code
from v_interstudata a
where a.stdcode=tt.stdcode
and a.startsem=tt.endsemedate) endsemester
возвращает более одного значения, поэтому Oracle жалуется на это.
Что делать? Хорошо, если вы можете включить дополнительные условия, которые будут ограничивать количество строк до 1
, сделайте это.
Я не знаю, насколько вы опытный Oracle (или SQL) пользователь, но - если вы еще не очень хорошо это знаете (пока), не используйте такие конструкции. Вы бы предпочли использовать объединения для получения нужных вам данных.