我有三个MySql表:
学生 - 学生证、学生姓名
评估 - 评估 ID、评估名称
结果 - 学生 ID、评估 ID、成绩
我无法预先确定学生或评估的数量,因为这些是由用户创建的。
如何选择一个双向表,显示所有学生的评估结果(将具有未预先确定的行数和列数):
|--------|---------|---------|---------|---------|---------|
|User |Test A |Test B |Test C |Test D |Test E |
|--------|---------|---------|---------|---------|---------|
|Alex |A |A |C |Null |F |
|Ben |Null |D |A |Null |Null |
|--------|---------|---------|---------|---------|---------|
我希望在SQL选择中执行此操作,或者在 ASP.NET 中使用LINQ to Entities,如果这具有实现相同目标的有效方法。
谢谢。
您无法在单个 SQL 查询中实现此目的。您将需要一个函数,该函数将生成具有变量列的结果集,然后从中进行选择。
我认为你不能直接在MySQL中创建透视表或交叉表。您可以选择按用户排序的结果,进行测试,然后将它们重新排列到交叉表中。
是否可以使用 LINQ 透视数据?
Linq:如何将行转换为具有计数的列(交叉表数据)?