我将学生成绩存储在表格中,如下所示:
StudentID | CourseID | TermID | Grade
1 | 1 | 1 | 10
1 | 2 | 1 | 12
1 | 3 | 1 | 9
1 | 4 | 1 | 5
1 | 5 | 1 | 19
1 | 1 | 2 | 11
前3列是外键。 我需要在某个学生的DataGridView中显示这些数据,例如:
_____|Course1|Course2|Course3|
Term1| 10 | 15 | 24 |
Term2| 12 | 30 | 50 |
我怎样才能实现这一目标?我应该更改数据模型吗?
编辑添加了一些示例数据。 以下查询可以工作,但我怎么能:
在结果中用相应的名称替换TermID。
课程ID相同,选择所有可用课程而不是编写ID([1],[2] ......)
SELECT * 从 ( SELECT [等级],[TermID],[CourseID] FROM Grades WHERE StudentID = 1 )AS来源 枢 ( MAX([级]) FOR [CourseID] IN([1],[2],[3],[20]) )作为支点
答案 0 :(得分:2)
您需要将DataTable绑定到DataGridView。也许你需要用SQL构建一个数据透视表。
SELECT [Term], [Course1], [Course2], [Course3]
FROM (SELECT * FROM [Grades]) AS [SourceTable]
PIVOT (MAX([Grade])
FOR [Term]
IN ([Course1], [Course2], [Course3]))
AS [PivotTable])
ORDER BY [Term] ASC
编辑如果你说这些字段是外键,你当然需要在它们上加入相应的表格。