以下是引用吹水佬在2023-3-1 11:42:37的发言:
SET ENGINEBEHAVIOR 70
SELECT 0000 id, bkzydm, xm, zf, 0000 pm, 0000 bl FROM aa ORDER BY bkzydm, zf DESC INTO CURSOR tmp READWRITE
SELECT bkzydm, zf, COUNT(*) bl FROM tmp GROUP BY bkzydm, zf INTO CURSOR tmp_bl
UPDATE tmp SET id=RECNO(),pm=1,bl=tmp_bl.bl from tmp_bl WHERE tmp.bkzydm==tmp_bl.bkzydm AND tmp.zf==tmp_bl.zf
UPDATE tmp;
SET pm=IIF(tmp.bkzydm!=b.bkzydm, 1, IIF(tmp.zf==b.zf, b.pm, b.pm+b.bl));
from tmp b WHERE b.id==tmp.id-1
SELECT * FROM tmp
几行代码看似简单(至少扫描4次),其实效率没5楼的高(明显只用扫描2次)。