回 帖 发 新 帖 刷新版面

主题:急求VFP中自动排名次代码,并列名次能自动跳过,如1,2,2,4,5,6,7,7,7,10.....

急求VFP中自动排名次代码,并列名次能自动跳过,如1,2,2,4,5,6,7,7,7,10.....

回复列表 (共16个回复)

11 楼

看这个排序程序。
源无序表名: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 楼

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 楼


怎么不用select sql一句搞定?

14 楼

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 楼

请参考我的帖子:

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 楼

15楼的方法很好,收下了。顶一下!!
[em11]

我来回复

您尚未登录,请登录后再回复。点此登录或注册