有这样一组数据表:
学号 姓名 数学 名次1 语文 名次2
1101 张三 99 87
1102 李四 97 85
1103 王五 86 90
查询之后如何实现
学号 姓名 数学 名次 语文 名次2
1101 张三 99 1 87 2
1102 李四 97 2 85 3
1103 王五 86 3 90 1
就是查询之后将学生以学号的顺序排序,但是学生的各科目的我名次动添加名次,既名次一开始是空的,排序之后自动添加名次,并且有相同的名次时候下一个自动添加,如何实现,在此感谢!是用临时表吗!
也就是如何将名次添加进去,在VB和ACCESS环境下!
学号 姓名 数学 名次1 语文 名次2
1101 张三 99 87
1102 李四 97 85
1103 王五 86 90
查询之后如何实现
学号 姓名 数学 名次 语文 名次2
1101 张三 99 1 87 2
1102 李四 97 2 85 3
1103 王五 86 3 90 1
就是查询之后将学生以学号的顺序排序,但是学生的各科目的我名次动添加名次,既名次一开始是空的,排序之后自动添加名次,并且有相同的名次时候下一个自动添加,如何实现,在此感谢!是用临时表吗!
也就是如何将名次添加进去,在VB和ACCESS环境下!
select a.学号,
a.姓名,
a.数学,
(select count(1) from tb where 数学 > a.数学) + 1 名次1,
a.语文,
(select count(1) from tb where 语文 > a.语文) + 1 名次2
from tb a--如果是sql server 2005 / oracle
select a.学号,
a.姓名,
a.数学,
row_number() over(order by 数学 desc) 名次1,
a.语文,
row_number() over(order by 语文 desc) 名次2
from tb a
出现"语法错误,操作符丢失"的提示,是不是我的数据环境有问题,vb+access
先用Dbgrid显示数据表中数据,然后进行排名。
dim rs as recordset
dim n as long
set rs=data1.recordset
rs.movefirst
n=1
Do while not rs.eof
rs!名次1=n
n=n+1
rs.movenext
loop
刷新一下data1.
最后再用select * from tabel order by 学号,显示为原先的排序。
同理,对语文排序也如此。