Давайте рассмотрим два разных варианта получения того, что вы хотите. Сначала нужно исправить общий запрос, чтобы переместить любое место в таблице r в соединение. Посмотрите эту ссылку, чтобы понять, почему то, что вы делаете, неправильно, если вам действительно нужно левое соединение:
http://wiki.lessthandot.com/index.php/WHERE_conditions_on_a_LEFT_JOIN
И никогда больше не используйте select * в рабочем коде, это плохая практика.
Вот фиксированный запрос:
select [List columns here do not list the join column twice!]
from ACADEMIC a
left join RESIDENCY r on a.PEOPLE_CODE_ID = r.PEOPLE_CODE_ID
and r.RESIDENT_COMMUTER='R'
and r.ACADEMIC_TERM='Fall'
and r.ACADEMIC_YEAR = (Select Year(GetDate()))
where a.ACADEMIC_TERM='Fall'
and a.ACADEMIC_SESSION=''
and a.ACADEMIC_YEAR = (Select Year(GetDate()))
and (CLASS_LEVEL LIKE 'FR%'
OR a.CLASS_LEVEL LIKE 'SO'
OR a.CLASS_LEVEL LIKE 'JR'
OR a.CLASS_LEVEL LIKE 'SR%')
Если это не дает вам того, что вам нужно, то вам может потребоваться сделать что-то вроде этого:
select [List columns here for a and r1, do not list the join column twice!]
from ACADEMIC a
left join(select min(people_code_id) from RESIDENCY r on a.PEOPLE_CODE_ID = r.PEOPLE_CODE_ID
and RESIDENT_COMMUTER='R'
and ACADEMIC_TERM='Fall'
and ACADEMIC_YEAR = (Select Year(GetDate())) ) r on a.PEOPLE_CODE_ID = r.PEOPLE_CODE_ID
left join RESIDENCY r1 on r.PEOPLE_CODE_ID = r1.PEOPLE_CODE_ID
where a.ACADEMIC_TERM='Fall'
and a.ACADEMIC_SESSION=''
and a.ACADEMIC_YEAR = (Select Year(GetDate()))
and (CLASS_LEVEL LIKE 'FR%'
OR a.CLASS_LEVEL LIKE 'SO'
OR a.CLASS_LEVEL LIKE 'JR'
OR a.CLASS_LEVEL LIKE 'SR%')