我想要一些关于如何写一个sql server查询的帮助,以便将学生的每月统计数据插入到表中。
我的月度统计表如下所示:|学生编号|年份|月份|一级|二级|缺席
现在我有了另一个表,其中包含学生详细信息,如学生ID、姓名等。还有多个其他表,其中包含成绩、出席情况等。
我的目标是从StudentDetails中选择所有学生ID,并将它们插入Monthly Stats表,同时从其他多个表中计算Grade1、Grade2和缺勤。
编写这样一个查询的最佳方法是什么?
我是否首先使用select将StudentsIds、Year列和Month列插入到查询中,然后以某种方式迭代插入的每个studentID,并对指定月份和年份的每个studentID运行更新查询(用于计算其余列)?
我只需要一个例子或一些逻辑如何实现这一点。对于插入学生的第一部分,我有这样的:
declare @maindate date = '20230101';
insert into Monthly_Stats (StudentID, Year, Month)
(select StudentID, AllocatedYear, AllocatedMonth
from Students_Allocation
where AllocatedMonth = DATEPART(MONTH, @maindate)
and AllocatedYear = DATEPART(YEAR, @maindate)
and Active = 1)
插入后,我想以某种方式更新每个学生ID的上述月份和年份的多个其他表中的每一个其他列(Grade1、Grade2、Absences ...)。
有什么想法吗?
1条答案
按热度按时间wn9m85ua1#
这是我通常执行的批量更新
使用两个左联接时要小心。根据数据库规范化的不同,您可能需要在ON子句中使用更多的条件来确保联接输出符合预期。
希望能有所帮助