【发布时间】:2015-01-12 21:02:15
【问题描述】:
我在 SQL 中有一个表,用于存储这样的结果
Result
---------------
ID | DateCreated
1 | 2014-10-10
上面结果下的Items
ResultItems
---------------
ResultID | StudentID | SubjID | Test1 | Test2 | Exam
1 | 1 | 1 | 7 | 7 | 30
1 | 2 | 1 | 8 | 8 | 35
1 | 1 | 2 | 5 | 5 | 45
1 | 2 | 2 | 6 | 6 | 40
我需要从这些表中进行选择,以便每个科目都在自己的列中,每个科目的分数在它下面相加
结果项
Result Output
---------------
StudentID| SubjID-1 | SubjID-2
1 | 44 | 55
2 | 51 | 52
我确实尝试过安静一些查询,例如下面的这个,它没有给出我需要的结果
SELECT r.*,
ri.StudentID,
ri.Test1,
ri.Test2,
ri.Exam,
( ri.Test1+ ri.Test2 + ri.Exam ) Total
FROM Result r
LEFT JOIN ResultItems ri
ON ri.ResultID = r.id
WHERE ri.Test1 <> '-'
AND
ri.Test2 <> '-'
AND
ri.exam <> '-';
如何修改此查询?
编辑
我阅读了 Pivot 并看到了这个问题 SQL - columns for different categories,在这种情况下,必须事先知道主题的名称/ID,这不适用于我的情况
【问题讨论】: