0

我有一张表,上面写着所有学生都必须参加 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 的视图,然后在主查询中加入它。这样我又需要创建另一个视图来在查询上执行更多功能..

任何人都可以帮忙。

4

1 回答 1

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

SQL Fiddle 与演示

查看在线图书的OVER 条款以获取更多信息。

于 2013-07-15T16:43:35.233 回答