主题:急求VFP中自动排名次代码,并列名次能自动跳过,如1,2,2,4,5,6,7,7,7,10.....
fdxxhjc
[专家分:0] 发布于 2008-01-14 09:45:00
急求VFP中自动排名次代码,并列名次能自动跳过,如1,2,2,4,5,6,7,7,7,10.....
回复列表 (共16个回复)
11 楼
zfh630528 [专家分:130] 发布于 2009-05-25 16:42:00
看这个排序程序。
源无序表名:ttt,以字段名为“总分”进行排序,生成新表abc。程序如下:
Select * From ttt Order By 总分 Desc Into Cursor rr
Select *,Recno() As 名次 From rr Into Cursor qq Readwrite
n总分=0
For i=1 To Reccount()
Go i
If 总分=n总分
Skip -1
n名次=名次
Go i
Replace 名次 With n名次
ENDIF
n总分=总分
Endfor
COPY TO abc
12 楼
farwish [专家分:270] 发布于 2009-05-27 11:30:00
select * from 名次表 into table mctemp order by 字段1,字段2 DESC
select mctemp
go top
n=1
z1=字段1
z2=字段2
do while!eof()
if 字段1=z1 and 字段2=z2
repl 名次 with n
else
n=recno()
repl 名次 with n
z1=字段1
z2=字段2
endi
skip
enddo
select 0
use 名次表
zap
appe from mctemp
13 楼
狐说八道 [专家分:860] 发布于 2009-05-27 15:12:00
怎么不用select sql一句搞定?
14 楼
sthk123 [专家分:10] 发布于 2009-05-27 16:56:00
close all
set safety off
select * from 表名 order by 总分 desc,平均分 desc into table cjk &&成绩库
select cjk
scan
zfx=总分
pjfx=平均分
jlh=recno()
if jlh=1
repl 名次 with 1
else
skip -1
szfx=总分 &&上记录总分
spjfx=平均分
mcx=名次
if zfx=szfx and pjfx=spjfx
go jlh
repl 名次 with mcx
else
go jlh
repl 名次 with mcx+1
endif
endif
endscan
15 楼
liupeisong [专家分:2340] 发布于 2009-05-27 23:54:00
请参考我的帖子:
http://bbs.pfan.cn/post-279288.html
&&全市排名
UPDATE szcjk SET qspm=(select COUNT(a.bmh)+1 from szcjk as a WHERE a.zf>szcjk.zf)
&&县区排名
UPDATE szcjk SET xqpm=(select COUNT(a.bmh)+1 from szcjk as a WHERE a.zf>szcjk.zf AND a.xqdh=szcjk.xqdh)
PS:今天用到时搞出来的,现在搜索本站没有,特与大家分享。
再PS:后来一搜发现其他人早就想出类似的方法,有点受打击
16 楼
zfh630528 [专家分:130] 发布于 2009-05-30 08:33:00
15楼的方法很好,收下了。顶一下!!
[em11]
我来回复