我在sql server中有一个表,如下所示
studentid subject marks
1 telugu 70
1 english 80
1 maths 90
1 social 70
我想在gridview中显示上表,如下所示
studentid telugu english maths social total
1 70 80 90 70 310
我尝试使用数据表,如下所示
我动态创建了数据列,如下所示
while (dr.Read())
{
dt.Columns.Add(dr["subname"].ToString(), typeof(string));
}
但没有想到插入动态显示的标记......
提前感谢.... 请帮帮我......
答案 0 :(得分:2)
这是使用pivot的解决方案(来自DB端的解决方案):
IF(OBJECT_ID('Example','U') IS NOT NULL)
DROP TABLE Example
CREATE TABLE Example (studentid INT,subject VARCHAR(30), marks INT)
INSERT INTO Example VALUES
(1,'telugu',70),
(1,'english',80),
(1,'maths',90),
(1,'social',70),
(2,'telugu',70),
(2,'english',80),
(2,'maths',90),
(2,'social',70)
SELECT studentid,[telugu],[english],[maths],[social] FROM Example
PIVOT
(
MAX(marks)
FOR subject IN ([telugu],[english],[maths],[social])
) AS pvt
答案 1 :(得分:2)
使用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