Sql server 使用不同表中的值计算积分

Sql server 使用不同表中的值计算积分,sql-server,Sql Server,我有两个表,第一个表名为Courses,包括列:coursecode&credits。 另一个表是course_实例,包括以下列:StudentID、finished_course和courscode 现在,我想计算每门课程的所有学分之和,每门课程在“完成课程”列中有一个“1”和一个特定的学生ID 寻找一种简单的方法来实现这一点,最好是在函数中。使用microsoft sql 我尝试过这样的方法,为了让学生完成课程,我还需要计算这些课程的学分总和,但由于这个代码不起作用,所以我甚至没有走那么远

我有两个表,第一个表名为Courses,包括列:coursecode&credits。 另一个表是course_实例,包括以下列:StudentID、finished_course和courscode

现在,我想计算每门课程的所有学分之和,每门课程在“完成课程”列中有一个“1”和一个特定的学生ID

寻找一种简单的方法来实现这一点,最好是在函数中。使用microsoft sql

我尝试过这样的方法,为了让学生完成课程,我还需要计算这些课程的学分总和,但由于这个代码不起作用,所以我甚至没有走那么远

SELECT coursecode
FROM course_instances where StudentID = 'asd123' and finished_course > 0
JOIN courses
ON course_instances.coursecode=courses.coursecode;

这里我按学生ID进行分组。如果你想要一个特定的学生,那么在where子句中提供学生ID

DROP TABLE cources
create table cources
(
    cname varchar (20),
    cCredits float
)
INSERT INTO cources
(
    cname,
    cCredits
)
Values
('FNC', 144.6),
('MTH', 244.6),
('ENG', 344.6),
('GRAM', 744.6),
('QUID', 644.6)

DROP TABLE course_instances;
CREATE TABLE course_instances
(
    StudentID INT, 
    finished_course INT, 
    courscode varchar(10)
)
INSERT INTO course_instances
(
    StudentID, 
    finished_course, 
    courscode
)
Values
(123,1,'FNC'),
(125,0,'FNC'),
(127,0,'FNC'),
(123,1,'ENG'),
(125,1,'ENG'),
(127,1,'ENG'),
(127,1,'QUID'),
(189,0,'QUID'),
(123,1,'QUID'),
(127,1,'MTH')


SELECT sum(c.cCredits) , StudentID
FROM cources c
INNER JOIN course_instances ci
ON ci.courscode = c.cname
WHERE ci.finished_course = 1
GROUP BY 
StudentID

这里我按学生ID进行分组。如果你想要一个特定的学生,那么在where子句中提供学生ID

DROP TABLE cources
create table cources
(
    cname varchar (20),
    cCredits float
)
INSERT INTO cources
(
    cname,
    cCredits
)
Values
('FNC', 144.6),
('MTH', 244.6),
('ENG', 344.6),
('GRAM', 744.6),
('QUID', 644.6)

DROP TABLE course_instances;
CREATE TABLE course_instances
(
    StudentID INT, 
    finished_course INT, 
    courscode varchar(10)
)
INSERT INTO course_instances
(
    StudentID, 
    finished_course, 
    courscode
)
Values
(123,1,'FNC'),
(125,0,'FNC'),
(127,0,'FNC'),
(123,1,'ENG'),
(125,1,'ENG'),
(127,1,'ENG'),
(127,1,'QUID'),
(189,0,'QUID'),
(123,1,'QUID'),
(127,1,'MTH')


SELECT sum(c.cCredits) , StudentID
FROM cources c
INNER JOIN course_instances ci
ON ci.courscode = c.cname
WHERE ci.finished_course = 1
GROUP BY 
StudentID

这似乎是可行的,你知道如何创建一个函数,只返回所有积分的总和吗?函数以studentID作为唯一的参数这似乎有效,你知道如何创建一个函数,只返回所有学分的总和吗?以studentID为唯一参数的函数