Создать новую переменную из строковой переменной и временной переменной (например, term) в SQL

Я пытаюсь получить переменную на основе двух других переменных из двух разных таблиц. Я хочу знать программу учащегося по окончанию его когортного семестра (то есть по окончании семестра, вне зависимости от его окончания). Я думаю, что объединение может быть неправильной функцией. Вот мой код:

select distinct s.colleagueId,st.term, 
coalesce(EndProgram.EndProgram) EndProgram
from tbl_studentTerms st 
inner join dbo.tbl_Terms t
  on st.term = t.term
  inner join
   tbl_students s
   on st.colleagueId = s.colleagueId 

- Окончание когортной программы

left join (
select st.activeProgram as EndProgram
from tbl_studentTerms st
inner join tbl_students s
on s.colleagueId=st.colleagueId
where st.term = s.endingCohort) EndProgram
on EndProgram.colleagueId = s.colleagueId

1 ответ

В последней строке раздела "Конечная когортная программа" вы присоединяетесь к "on EndProgram.colleagueId = s.colleagueId" - однако оператор выбора, помеченный как EndProgram, не возвращает столбец ColleagueID, поэтому вы не можете присоединиться к нему., Если вы добавите его, вы можете решить эту конкретную проблему:

left join (
select st.activeProgram as EndProgram,
s.colleagueId as ColleagueID
from tbl_studentTerms st
inner join tbl_students s
on s.colleagueId=st.colleagueId
where st.term = s.endingCohort) EndProgram
on EndProgram.colleagueId = s.colleagueId
Другие вопросы по тегам