我将学生成绩存储在下表中:
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] ...)
选择 *
从
(
选择[等级],[TermID],[CourseID]
从年级开始,WHEREID = 1
)AS来源
枢
(
MAX([等级])
FOR [CourseID] IN([1],[2],[3],[20])
)为枢纽
最佳答案
您需要将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
如果您说字段是外键,则进行编辑,当然,您需要在它们上联接相应的表。