报表的小问题(200分)

  • 主题发起人 主题发起人 digitalmachine
  • 开始时间 开始时间
D

digitalmachine

Unregistered / Unconfirmed
GUEST, unregistred user!
一个学生成绩数据库,有学号、姓名、班级、年级、数学、语文、英语,
请问怎样从一个报表中打印出一个班的学生的 数学成绩、数学班名次、数学级名次、
语文成绩、语文班名次、语文级名次、英语成绩、英语班名次、英语级名次
总分班名次、总分级名次。
谢谢!
 
一个学生成绩数据库,有学号、姓名、班级、年级、数学、语文、英语,
请问怎样从一个报表中打印出一个班的学生的 数学成绩、数学班名次、数学级名次、
语文成绩、语文班名次、语文级名次、英语成绩、英语班名次、英语级名次
总分班名次、总分级名次。
谢谢!
 
union 联合查询,按学科查三次,联合成一个表。每次的查询进行排序,并增加一个计算字段来作为排名。
至于报表,那就简单了。复杂报表请看:http://www.delphibbs.com/delphibbs/dispq.asp?lid=973922
 
赞成用union来连接多个sql查询语句,根据需要选择要查询的字段就行了!
 
to chenjiong and zhuwei02
union怎么用啊?能说具体一点吗?
 
要用子查询,用union是不行的
 
select d1.学号,d1.姓名,d1.数学成绩,
(select count(*)+1 from (select * from 表 d2 where d2.班级=d1.班级 and d2.数学成绩>d1.数学成绩)) as 数学班名次,
(select count(*)+1 from (select * from 表 d2 where d2.年级=d1.年级 and d2.数学成绩>d1.数学成绩)) as 数学级名次,
(select count(*)+1 from (select * from 表 d2 where d2.班级=d1.班级 and (d2.数学成绩+d2.语文成绩+d2.英语成绩)>(d1.数学成绩+d1.语文成绩+d1.英语成绩))) as 总分班名次,
(select count(*)+1 from (select * from 表 d2 where d2.年级=d1.年级 and (d2.数学成绩+d2.语文成绩+d2.英语成绩)>(d1.数学成绩+d1.语文成绩+d1.英语成绩))) as 总分级名次
from 表 d1
where d1.班级=你的班级
中间其他学科加进就行,语句一样,成绩应为实数型,若为字符型应加上相应的转换函数
 
to pengjinlongex 谢谢你的回答
你的方法我尝试过,但是在PARADOX中 得到的每个同学的 名次 都是同一个值
例如: 学号 姓名 数学成绩 数学班名次 .....(其它名次类似)........
991 张三 98 1
992 李四 90 1
993 王五 80 1
http://www.delphibbs.com/delphibbs/dispq.asp?lid=569765
来自:SeaSky, 时间:2001-6-19 1:12:00, ID:572322
update 成绩表 b set 名次 = (select count(*) from 成绩表 a where a.总分 >= b.总分)
但是这样的话就要设多一个 名次 的字段,有点数据冗余
有没有更好、更高效的办法?
 

需要使用多级查询可以解决
推荐报表专家控件:
http://www.smartparter.com/download/ReportExpert20.zip
好用的话,别忘了给我分!
 
后退
顶部