带CASE的SQL连接条件
我有一个查询,我正在使用它将多个列连接到一个列,但是我得到了“临近学年的错误语法”。有什么想法吗?我不太确定如何在join中结束这个案例带CASE的SQL连接条件,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个查询,我正在使用它将多个列连接到一个列,但是我得到了“临近学年的错误语法”。有什么想法吗?我不太确定如何在join中结束这个案例 select distinct bb.pk1 as 'LearnSourceKey', sc.pk1 as 'SISSourceKey', row_number () over (partition by bb.pk1 order by sc.SISCourseKey) as 'RowRank' from Source.SIS
select distinct
bb.pk1 as 'LearnSourceKey',
sc.pk1 as 'SISSourceKey',
row_number () over (partition by bb.pk1 order by sc.SISCourseKey) as 'RowRank'
from
Source.SISCourse sc
left join source.SISTerm st on sc.TermSourceKey=st.SISTermKey
inner join Source.COURSE_MAIN bb
on bb.batch_uid = substring(CatalogNumber, 1, (len(CatalogNumber) - 1)) +
case
when st.TermDescription='Semester 1'
then 'SEM-1' + '_' + st.AcademicYear
Case语句应该有结束表达式
select distinct
bb.pk1 as 'LearnSourceKey',
sc.pk1 as 'SISSourceKey',
row_number () over (partition by bb.pk1 order by sc.SISCourseKey) as 'RowRank'
from
Source.SISCourse sc
left join source.SISTerm st on sc.TermSourceKey=st.SISTermKey
inner join Source.COURSE_MAIN bb
on bb.batch_uid = substring(CatalogNumber, 1, (len(CatalogNumber) - 1)) +
case
when st.TermDescription='Semester 1'
then 'SEM-1' + '_' + st.AcademicYear
end
这是您的查询,基本上是:
select distinct bb.pk1 as LearnSourceKey,
sc.pk1 as SISSourceKey,
row_number () over (partition by bb.pk1 order by sc.SISCourseKey) as RowRank
from Source.SISCourse sc left join
source.SISTerm st
on sc.TermSourceKey = st.SISTermKey inner join
Source.COURSE_MAIN bb
on bb.batch_uid = (left(CatalogNumber, len(CatalogNumber) - 1) +
(case when st.TermDescription = 'Semester 1' then 'SEM-1' + '_' + st.AcademicYear end)
);
您的案例
没有else
子句。因此,当条件满足时,任何不满足条件的内容都将为NULL。这意味着您可以将其简化为:
select distinct bb.pk1 as LearnSourceKey,
sc.pk1 as SISSourceKey,
row_number () over (partition by bb.pk1 order by sc.SISCourseKey) as RowRank
from Source.SISCourse sc left join
source.SISTerm st
on sc.TermSourceKey = st.SISTermKey inner join
Source.COURSE_MAIN bb
on st.TermDescription = 'Semester 1' and
bb.batch_uid = (left(CatalogNumber, len(CatalogNumber) - 1) +
st.AcademicYear
);
这(与原始查询一样)假设
st.AcademicYear
是一个字符串。您没有结束case
表达式。您应该提供示例数据和所需结果。