在DataGridView中显示数据

时间:2013-12-19 10:47:31

标签: c# sql sql-server database-design datagridview

我将学生成绩存储在表格中,如下所示:

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]) )作为支点

1 个答案:

答案 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

编辑如果你说这些字段是外键,你当然需要在它们上加入相应的表格。