内连接和部分匹配

时间:2015-07-01 17:16:24

标签: sql tsql

我不确定标题是否正确,所以这里就是。

以下脚本返回正确的结果:当前 Roy Brown 教授 Math 101 Roy Brown的 TeacherID 1225 ,但随后他们为其他目的添加了前缀 001 -

我希望在结果中包含一些标识 Roy Brown 在某个时间点确实有另一个课程,因为 Math 101 Old 1225 。它甚至不必显示他有多少其他课程;只是让我知道#coursesCsv中有多行的东西。但结果应保持为2行。

不想要是为 Roy Brown 显示一个额外的行,这就是为什么我没有做评论{{1 }(即inner join)。

这两个表之间没有关系,因为right(t.teacherid,4) = right(c.teacherid,4)中的数据来自csv文件。

#coursesCSV

1 个答案:

答案 0 :(得分:0)

在派生表(或公用表格表达式= WITH)中对同一right(teacherid,4)的课程执行“组计数”并加入其中:

select t.teacherid, c.coursename, c.coursecnt
from teacher t 
inner join 
 (
   select 
      teacherid,
      coursename,
      count(*)
      over (partition by right(teacherid,4)) as coursecnt
   from coursesCsv
 ) as c
on t.teacherid = c.teacherid