我将学生成绩存储在下表中:

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


如果您说字段是外键,则进行编辑,当然,您需要在它们上联接相应的表。

10-06 05:16
查看更多