c# - 在 DataGridView 中显示数据

标签 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 替换为结果中相应的名称。

  • 类(class) ID 也是如此,选择所有可用类(class)而不是写入其 ID([1]、[2]...)

    选择* 从 ( 选择 [成绩]、[学期 ID]、[类(class) ID] 来自学生 ID = 1 的年级 ) AS 源 枢 ( 最大([等级]) FOR [类(class)ID] IN ([1], [2], [3], [20]) ) 作为枢轴

最佳答案

您需要将 DataTable 绑定(bind)到 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

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

关于c# - 在 DataGridView 中显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20679601/

相关文章:

c# - 如何在 Win 7 visual studio 2012 中禁用 C# 中的 #if DEBUG

c# - 为什么我不能直接调用DbContext.ObjectContext?

sql - 使用 groupby 聚合,但在聚合列上具有不同的条件

sql - 我们如何在 SQL Server 中使用 sysindexes 表获取表索引和相关列?

sql-server - SQL Server查询执行计划在已使用的索引上显示错误 "actual row count"并且性能非常慢

sql - sql数据库中identity_insert的默认设置是什么?

c# - 是否有 Rob Conery 的 Massive for NoSQL (MongoDB) 的等价物?

c# - 应用程序卡在全屏?

mysql - 当满足其他列上的多个子句时,选择不同的列值

c# - 并发访问数据库——防止两个用户获取相同的值