我有一张桌子上写着所有学生必须参加10门课程,其中5门是强制性的,从其他5门中选择3门。所以基本上有2组。现在我需要计算总积分和总和积分之和。
表#1
StudentID ProgID ProgName GroupID GroupName Course Complete_Courses_Alert Credits
1 100 MS 501 Mandatory 12 Remaining 3
1 100 MS 501 Mandatory 13 Complete 3
1 100 MS 501 Mandatory 14 Complete 3
1 100 MS 501 Mandatory 15 Remaining 3
1 100 MS 501 Mandatory 16 Complete 3
1 100 MS 502 Elective 17 Complete 3
1 100 MS 502 Elective 18 Complete 3
1 100 MS 502 Elective 19 Remaining 3
1 100 MS 502 Elective 20 Complete 3
1 100 MS 502 Elective 21 Remaining 3
我希望输出为
上表但添加了2个字段。
即。已完成学分总和(总学分) 和完成学分(按组)
这是我到目前为止所做的, 我创建了一个用于计算总积分和GrouptotalCredits的视图,然后在主查询中加入它。这样我又需要创建另一个视图来在查询上执行更多功能..
任何人都可以提供帮助。
答案 0 :(得分:1)
我认为你正在寻找类似的东西:
select *
, StudentGroupCredits = sum(case when Complete_Courses_Alert = 'Complete' then Credits else 0 end) over (partition by StudentId, GroupName)
, StudentTotalCredits = sum(case when Complete_Courses_Alert = 'Complete' then Credits else 0 end) over (partition by StudentId)
from Courses
查看联机丛书中的OVER Clause了解详情。