【发布时间】:2014-11-20 19:54:53
【问题描述】:
-------------------------------
StudentID| SubCode | Marks |
-------------------------------
B016124 | 112 | 89 |
B016124 | 114 | 91 |
B016124 | 116 | 99 |
-------------------------------
B016129 | 112 | 78 |
B016129 | 114 | 88 |
B016129 | 116 | 0 |
输出:
SubCode=112 SubCode=114 SubCode=116 tot of 112+114 |Tot 112+114+116
-----------------------------------------------------------------------------------
StudentID | PractEx112 | PractEx114| TotalPract |ExamMrks116 | TotalMarks |
-----------------------------------------------------------------------------------
B016124 | 89 | 91 | 180 | 90 | 270 |
-----------------------------------------------------------------------------------
B016129 | 78 | 88 | 166 | 0 | 0 |
-----------------------------------------------------------------------------------
Select StudentID,
, sum(CASE WHEN SubCode = 112 THEN Marks END) AS PractEx112
, sum(CASE WHEN SubCode = 114 THEN Marks END) AS PractEx114
, sum(CASE WHEN SubCode IN(112,114) THEN Marks END) AS TotalPract
, sum(CASE WHEN SubCode = 116 THEN Marks END) AS ExamMrks116
FROM STUDENTS
GROUP BY StudentID
如何计算上述 select 语句中的 TotalMarks,其中 如果学生没有参加 ExamMrks116(SubCode=116),则 TotalMarks = 0。
否则使用 PractEx112(SubCode=112)、PractEx114(SubCode=114) 和 ExamMrks116(SubCode=116) 的总和
【问题讨论】:
-
请格式化您的问题。我了解您的输入和预期输出,但我无法理解您对所需逻辑的陈述。
-
我如何设置问题的格式 我有整个问题的图像或文本格式
-
我需要计算 TotalMarks,即 PractEx112+PractEx114 +ExamMrks116。如果学生没有参加 ExamMrks116,则他们的粒子不会添加到 TotalMarks 中,并且 TotalMarks = 0 只有在 ExamMarks116 列中输入了分数时才会添加。