编程技巧擂台赛[四]
数据表[体考.DBF]结构如下:数据表[标准.DBF]结构如下:
参照数据表[标准.DBF]中的内容,统计出必考分数[必考项目]、抽选分数[抽选项目]、自选分数[自选项目]、备选分数[备选项目]及总分数。
tabl.rar
(73.65 KB)
请朋友们帮助,给出最优方案。
USE 体考 SELECT 体考 DIMENSION tmp(1),tmp2(1),tmp3(1),tmp4(1) SCAN SELECT 分数 FROM 标准 WHERE BETWEEN(体考.必考项目数,下限,上限) AND 标准.项目名称==体考.必考项目 AND 标准.性别=体考.性别 INTO ARRAY tmp IF NOT (EMPTY(tmp) OR ISNULL(tmp)) replace 必考分数 WITH tmp ENDIF SELECT 分数 FROM 标准 WHERE BETWEEN(体考.抽定项目数,下限,上限) AND 标准.项目名称==体考.抽选项目 AND 标准.性别=体考.性别 INTO ARRAY tmp2 IF NOT (EMPTY(tmp2) OR ISNULL(tmp2)) replace 抽选分数 WITH tmp2 ENDIF SELECT 分数 FROM 标准 WHERE BETWEEN(体考.自选项目数,下限,上限) AND 标准.项目名称==体考.自选项目 AND 标准.性别=体考.性别 INTO ARRAY tmp3 IF NOT (EMPTY(tmp3) OR ISNULL(tmp3)) replace 自选分数 WITH tmp3 ENDIF SELECT 分数 FROM 标准 WHERE BETWEEN(体考.备选项目数,下限,上限) AND 标准.项目名称==体考.备选项目 AND 标准.性别=体考.性别 INTO ARRAY tmp4 IF NOT (EMPTY(tmp4) OR ISNULL(tmp4)) replace 备选分数 WITH tmp4 ENDIF replace 总分数 WITH 必考分数+抽选分数+自选分数+备选分数 ENDSCAN
SELECT ksh,分数 FROM 体考 LEFT JOIN 标准 ; ON 标准.项目名称=体考.必考项目 AND 标准.性别=体考.性别 ; AND BETWEEN(体考.必考项目数,下限,上限) INTO CURSOR cursor1 SELECT ksh,分数 FROM 体考 LEFT JOIN 标准 ; ON 标准.项目名称=体考.抽选项目 AND 标准.性别=体考.性别 ; AND BETWEEN(体考.抽定项目数,下限,上限) INTO CURSOR cursor2 SELECT ksh,分数 FROM 体考 LEFT JOIN 标准 ; ON 标准.项目名称=体考.自选项目 AND 标准.性别=体考.性别; AND BETWEEN(体考.自选项目数,下限,上限) INTO CURSOR cursor3 SELECT ksh,分数 FROM 体考 LEFT JOIN 标准 ; ON 标准.项目名称=体考.备选项目 AND 标准.性别=体考.性别 ; AND BETWEEN(体考.备选项目数,下限,上限) INTO CURSOR cursor4 SELECT 体考.ksh,性别,必考项目,抽选项目,自选项目,备选项目,必考项目数,抽定项目数,自选项目数,备选项目数,; NVL(cursor1.分数,0) AS 必考分数 FROM 体考,cursor1 WHERE 体考.ksh=cursor1.ksh INTO CURSOR cursor5 SELECT cursor5.* ,NVL(cursor2.分数,0) AS 抽选分数 FROM cursor5,cursor2 WHERE cursor5.ksh=cursor2.ksh INTO CURSOR cursor6 SELECT cursor6.* ,NVL(cursor3.分数,0) AS 自选分数 FROM cursor6,cursor3 WHERE cursor6.ksh=cursor3.ksh INTO CURSOR cursor5 SELECT cursor5.* ,NVL(cursor4.分数,0) AS 备选分数 FROM cursor5,cursor4 WHERE cursor5.ksh=cursor4.ksh INTO CURSOR cursor6 SELECT cursor6.* ,必考分数+抽选分数+自选分数+备选分数 AS 总分数 FROM cursor6 INTO CURSOR cursor5 BROWSE