使用其他行的数据创建多个新行



是否有办法向表中添加额外的行,从其他行中提取数据?具体来说,我需要将某一特定学科的所有教师与所有班级联系起来。目前,代码看起来像这样:

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

相关内容

  • 没有找到相关文章

最新更新