我试图强制通过零值来获取我Results
表中不存在的成绩,但确实存在于我的可能Grades
表的列表中。
我已经设法成功加入了表格,以便使用this previous post作为指导来达到这一目标。
正如您从我的小提琴中看到的那样,结果集显示我的Year
和Subject
列的NULL值,我希望这些值显示相关主题。
答案 0 :(得分:1)
请勿在{{1}}中使用*
,而是使用指定所需的列并使用SELECT
并将其设为零,如:
ISNULL
答案 1 :(得分:0)
你需要的是一个主题和年份表,然后交叉加入成绩......
create table Subjects(SubjectID INT, Subject Varchar(50));
create table YearSub (SubjectID INT, Year INT, CrateDate Date); -- Map your available subjects for each year in here
一旦你有了thiese,做一个CTE来保存可用科目,年份和成绩的完整列表
with AllGrades as
(select SubjectID, Year, Grade
from YearSub YS
cross join Grades
)
select ...
from AllGrades
left join ...
等等
答案 2 :(得分:0)
我认为这就是你想要的。
首先,你得到学生和学生的所有组合。使用CROSS JOIN
的成绩然后你LEFT JOIN到resutl表获得计数
select s.year, subject grade, grade, count(wag) as Total
from student s
cross join grades g
left join results r on s.upn = r.upn and s.upn = r.upn
group by s.year, g.grade