Как исключить определенный шаблон комбинации в наборе данных в Webfocus? - PullRequest
0 голосов
/ 10 мая 2019

введите код здесь У меня есть набор данных, по которому я должен избавиться от ученика, если у него / нее есть оценка, отличная от "F".здесь, в примере, у Брайана есть оценки, отличные от «F», поэтому Брайан не должен появляться в моем результате.Должен появиться только Джек, так как я хочу, чтобы ученики класса «F» были ИСКЛЮЧИТЕЛЬНО.

Данные веб-фокуса

Я пробовал это в Веб-фокусе, используя функции OMITS, NE, но яне удалось решить проблему (нажмите, чтобы увидеть снимок экрана).Как уже упоминалось выше, я ожидаю только записи Джека, поскольку у Брайана есть оценки, отличные от «F».Буду очень признателен за вашу помощь.Спасибо.

Я застрял на последней строке в коде:

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

1 Ответ

0 голосов
/ 10 мая 2019

Это очень сложный способ запроса 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

Это должно дать вам оценки Брайана.

EDIT: глагол изменен с PRINT на SUM, чтобы получить только одну запись и NOPRINT в поле AA.

...