标题>标题>
是否有办法向表中添加额外的行,从其他行中提取数据?具体来说,我需要将某一特定学科的所有教师与所有班级联系起来。目前,代码看起来像这样:
SELECT
class
teacher
subject
FROM TeachingSets
并生成如下表
<表类>类 老师 主题 tbody><<tr>1 亚当 英语 2比尔 数学 3 卡尔 数学 4戴夫 科学 5埃文 数学 表类>
这是相当简单的join
逻辑:
declare @t table(Class int,Teacher varchar(10),Subject varchar(10));
insert into @t values
(1,'Adam','English')
,(2,'Bill','Maths')
,(3,'Carl','Maths')
,(4,'Dave','Science')
,(5,'Evan','Maths')
;
select c.Class
,s.Teacher
,s.Subject
from @t as c
join @t as s
on c.Subject = s.Subject
order by c.Class
,s.Teacher;
<标题>结果<表类>类 老师 主题 tbody><<tr>1 亚当 英语 2比尔 数学 2卡尔 数学 2埃文 数学 3 比尔 数学 3 卡尔 数学 3 埃文 数学 4戴夫 科学 5比尔 数学 5卡尔 数学 5埃文 数学 表类>
使用下面的代码
SELECT TBL.CLASS,ISNULL(X.TEACHER,TBL.TEACHER) TEACHER,TBL.SUBJECTS FROM
TeachingSets as TBL LEFT JOIN (
SELECT * FROM TeachingSets WHERE SUBJECTS='MATHS'
)X ON TBL.SUBJECTS=X.SUBJECTS