当前位置:编程学习 > Delphi >>

SQL求总分及平均分(delphi开发数据库)

用mssql生成一个表test
  字段有:id int(自动编号),学号 int,科目 char(20),成绩 int
  数据有:
  1)-,1,语文,60 
  2)-,1,数学,70 
  3)-,1,英语,75
  4)-,2,语文,55 
  5)-,2,数学,53 
  6)-,2,英语,71
  7)-,3,语文,80 
  8)-,4,数学,0 
  9)-,5,英语,91
  ……
  编程要求,把所有人的各学科成绩及总分、平均分列出来,使用最简短的SQL语句来实现,每人一条记录,使用ADO数据库控件和网格来显示,如下:
  注意:科目的个数是动态的(不确定的),要从上表中读出共多少科。
  学号 语文  数学    英语   ...  总分 平均分
  1    60    70      75     ...  205  68.3
  2    55    53      71     ...  179  59.67
  3    80   0或null 0或null ...  80  26.67
  .....
  .....
或者
  学号 语文  数学    物理   化学  英语  政治 ...  总分 平均分
  .....
  .....
  (可用动态语句创建临时表,或也可直接用组合SQL语句)补充:用delphi以ADO方式访问数据库。分别用两个网格来显示执行SQL语句前后的数据。最好能给出代码---关键是TADOQuery的ADOQuery.SQL.Add('');
 
答案:

select  学号,sum(case 科目 when '语文' then 成绩 else 0 end)语文,sum(case 科目 when '数学' then 成绩 else 0 end) 数学,sum(case 科目 when '英文' then 成绩 else 0 end)英语,sum(成绩),avg(成绩) from  test group by 学号

我只写了三个科目,其它的你可以增加。

你这是交叉数据报表

这有答案

http://topic.csdn.net/t/20030924/15/2295276.html

上一个:Delphi 里的#48是对应键盘什么键?
下一个:c visual c++ vb delphi 各是什么意思

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,