0

在此处输入代码我有一个数据集,如果学生的成绩不是“F”,我必须在其中摆脱他/她。在此示例中,Brian 的成绩不是“F”,因此,Brian 不应出现在我的结果中。只有杰克应该出现,因为我只想要“F”级的学生。

网络焦点数据

我在 Webfocus 中使用 OMITS、NE 功能进行了尝试,但我无法解决问题(请点击查看屏幕截图)。如上所述,我只期待杰克的记录,因为布赖恩的成绩不是“F”。我将衷心感谢您的帮助。谢谢。

我被困在代码的最后一行:

TABLE FILE TABLE1
PRINT 
     ID
     NAME
     Grade
WHERE (ID OMITS (PRINT * from TABLE1 WHERE (Grade NE 'F')));
4

1 回答 1

0

这是向 WF 查询的一种非常复杂的方式!

这段代码,它用于加载您在图像中显示的数据:

-*
-* FILE ALLOCATION
-*
FILEDEF AMDEXAM DISK amdexam.ftm (APPEND
-RUN
-*
-* MASTER TO READ AMDS EXAMPLE
-*
EX -LINES 5 EDAPUT MASTER,AMDEXAM,CV,FILE
FILENAME=AMDEXAM,  SUFFIX=FIX, SEGNAME=AMDEXAM, SEGTYPE=S0, $
  FIELD=ID    ,ALIAS=ID    ,USAGE=A5  ,ACTUAL=A5  ,$
  FIELD=NAME  ,ALIAS=NAME  ,USAGE=A10 ,ACTUAL=A10 ,$
  FIELD=GRADE ,ALIAS=GRADE ,USAGE=A1  ,ACTUAL=A1  ,$
-* 
-* LOAD FILE WITH SOME RECORDS
-* 
-WRITE AMDEXAM A1   Brian     A
-WRITE AMDEXAM A1   Brian     B
-WRITE AMDEXAM A1   Brian     B
-WRITE AMDEXAM A1   Brian     A
-WRITE AMDEXAM A1   Brian     C
-WRITE AMDEXAM A1   Brian     F
-WRITE AMDEXAM A1   Brian     F
-WRITE AMDEXAM A2   Jack      F
-WRITE AMDEXAM A2   Jack      F
-WRITE AMDEXAM A2   Mystic    B
-WRITE AMDEXAM A3   Mystic    A
-WRITE AMDEXAM A3   Mystic    C
-WRITE AMDEXAM A3   Mystic    C
-WRITE AMDEXAM A4   Joe       F
-WRITE AMDEXAM A4   Joe       F
-WRITE AMDEXAM A4   Ruben     B
-WRITE AMDEXAM A4   Ruben     A
-*

您可以尝试这样的事情来实现您的要求:

TABLE FILE AMDEXAM 
 SUM
  COMPUTE AA/I1 = IF ((LAST NAME NE NAME AND GRADE NE 'F') OR (LAST NAME EQ NAME AND LAST AA EQ 1)) THEN 1 ELSE 0; NOPRINT
  BY ID
  BY NAME
  BY GRADE
  WHERE TOTAL AA EQ 0
  ON TABLE SET BYDISPLAY ON
END
-RUN
-EXIT

那应该给你布莱恩的成绩。

编辑:将动词从 PRINT 更改为 SUM 以仅获取一条记录,将 NOPRINT 更改为字段 AA。

于 2019-05-10T10:00:59.143 回答