C# 如何使用asp.net垂直获取sql水平数据库值
我在SQLServer中有一个表,如下所示C# 如何使用asp.net垂直获取sql水平数据库值,c#,asp.net,sql-server,datatables,C#,Asp.net,Sql Server,Datatables,我在SQLServer中有一个表,如下所示 studentid subject marks 1 telugu 70 1 english 80 1 maths 90 1 social 70 studentid telugu english maths social total 1
studentid subject marks
1 telugu 70
1 english 80
1 maths 90
1 social 70
studentid telugu english maths social total
1 70 80 90 70 310
while (dr.Read())
{
dt.Columns.Add(dr["subname"].ToString(), typeof(string));
}
我想在gridview中显示上表,如下所示
studentid subject marks
1 telugu 70
1 english 80
1 maths 90
1 social 70
studentid telugu english maths social total
1 70 80 90 70 310
while (dr.Read())
{
dt.Columns.Add(dr["subname"].ToString(), typeof(string));
}
我尝试使用datatable,如下所示
我动态创建了datacolumns,如下所示
studentid subject marks
1 telugu 70
1 english 80
1 maths 90
1 social 70
studentid telugu english maths social total
1 70 80 90 70 310
while (dr.Read())
{
dt.Columns.Add(dr["subname"].ToString(), typeof(string));
}
但并没有像上面那样动态插入标记的想法
提前谢谢。。。。
请帮助我…这里有一个使用pivot的解决方案(DB端的解决方案):
下面是一个使用pivot的解决方案(DB端的解决方案):
另一种方法是使用
CASE
SELECT studentid
,MAX(CASE WHEN subject = 'telugu' THEN marks END) AS telugu
,MAX(CASE WHEN subject = 'english' THEN marks END) AS english
,MAX(CASE WHEN subject = 'maths' THEN marks END) AS maths
,MAX(CASE WHEN subject = 'social' THEN marks END) AS social
,SUM(marks) AS Total
FROM yourTable
GROUP BY studentid
另一种方法是使用
CASE
SELECT studentid
,MAX(CASE WHEN subject = 'telugu' THEN marks END) AS telugu
,MAX(CASE WHEN subject = 'english' THEN marks END) AS english
,MAX(CASE WHEN subject = 'maths' THEN marks END) AS maths
,MAX(CASE WHEN subject = 'social' THEN marks END) AS social
,SUM(marks) AS Total
FROM yourTable
GROUP BY studentid
看看透视表你可以像Urili说的那样旋转,但是你有一定数量的主题吗?看看透视表你可以像Urili说的那样旋转,但是你有一定数量的主题吗?如何使用sql@Ramya您要求的科目总数,只需添加
,总和(分数)作为总计
在中选择
。查看更新后的答案@sqluser我已经使用了该查询,我得到的是所有学生分数的总和,而不是单个分数的总和……因为数据库中没有总分数的列,所以我想动态添加每个科目的值,并将其显示为总分数。这应该显示每个学生的总分数,因为它是按studentId分组的。告诉我你想要的输出,这样我就可以提供帮助。如何使用sql@Ramya您要求的科目总数,只需在选择
中添加,合计(分数)作为总数
。查看更新后的答案@sqluser我已经使用了该查询,我得到的是所有学生分数的总和,而不是单个分数的总和……因为数据库中没有总分数的列,所以我想动态添加每个科目的值,并将其显示为总分数。这应该显示每个学生的总分数,因为它是按studentId分组的。给我看看你想要的结果,这样我就能帮你了。