数据表[体考.DBF]中字段的关系
必考项目—>必考项目数(测试结果)—>必考分数(对照[标准.DBF]中的下限及上限判断,给出分数)
抽选项目—>抽选项目数(测试结果)—>抽选分数(同上)
自选项目—>自选项目数(测试结果)—>自选分数(同上)
备选项目—>备选项目数(测试结果)—>备选分数(同上)
只统计[标准.DBF]中有的内容。
[ 本帖最后由 sdta 于 2012-12-31 17:48 编辑 ]
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