主题:关于分组排序后加名次的问题
lianyan99
[专家分:0] 发布于 2008-07-05 20:18:00
有如下表:
报考学校 报考学院 报考专业 准考证号 分数
A1 B1 C1 D1 65
A1 B1 C2 D2 45
A1 B1 C1 D3 77
A1 B2 C3 D4 89
A1 B2 C3 D5 78
A1 B2 C1 D6 77
A2 B3 C1 D7 71
A2 B3 C4 D8 65
A2 B2 C2 D9 57
A2 B2 C2 D10 92
按报考学校,报考学院,报考专业,分数进行排序结果如下。
排序后如下:
报考学校 报考学院 报考专业 准考证号 分数 名次
A1 B1 C1 D3 77 1
A1 B1 C1 D1 65 2
A1 B1 C2 D2 45 1
A1 B2 C1 D6 77 1
A1 B2 C3 D4 89 1
A1 B2 C3 D5 78 2
A2 B2 C2 D10 92 1
A2 B2 C2 D9 57 2
A2 B3 C1 D7 71 1
A2 B3 C4 D8 65 1
程序如何写啊?
回复列表 (共1个回复)
沙发
cqf8340 [专家分:1810] 发布于 2008-07-05 22:36:00
SELECT VAL(right(ALLTRIM(学校),1)+right(ALLTRIM(学院),1)+right(ALLTRIM(专业),1)) as 序号,学校,学院,专业,分数,名次 FROM 表 INTO TABLE 新表
序号=fields(1)
SELECT max(VAL(right(ALLTRIM(学校),1)+right(ALLTRIM(学院),1)+right(ALLTRIM(专业),1))) from 新表 into array bj
FOR zh=1 to bj step 1
SELECT max(分数) from 表 into array zd1
z=zd1
m=1
DO while z>=0
COUN all for 分数=z and &序号=zh to t
IF !empty(t)
REPL all 名次 with m for 分数=z and &序号=zh
z=z-1
m=m+t
ELSE
z=z-1
ENDIF
ENDDO
ENDFOR
我来回复