אני לא מכיר דו"ח כזה , אבל נתקל באותה בעיה בוריאציות שונות ופותר אותה על ידי הורדת הטבלאות לאקסל ובדיקה מה נמצא בעמודה אחת ולא באחרת על ידי הפונקציה match.
כתבתי פעם פרוצדורה בפריוריטי שמבצעת את אותו הדבר, פחות או יותר.
/*
Stack4:
key: -> part
intdata: 1 if appears in tree 1
realdata: quant in tree 1
intdata2: 1 if appears in tree 2
realdata: quant in tree 2
The report will print parts where intdata intdata2, or realdata
realdata2
*/
LINK PARTARC TO :$.ARC;
ERRMSG 1 WHERE :RETVAL <= 0;
LINK STACK4 TO :$.STK;
ERRMSG 1 WHERE :RETVAL <= 0;
LINK PART TO :$.P1;
ERRMSG 1 WHERE :RETVAL 0;
EXECUTE SONRAW :$.P1, SQL.DATE8, :$.ARC, 2, '-N';
INSERT INTO STACK4 (KEY, INTDATA, REALDATA)
SELECT SON, 1, COEF
FROM PARTARC
WHERE SON > 0;
UNLINK PART;
DELETE FROM PARTARC;
LINK PART TO :$.P2;
ERRMSG 1 WHERE :RETVAL 0;
EXECUTE SONRAW :$.P2, SQL.DATE8, :$.ARC, 2, '-N';
:COEF = 0.0;
DECLARE CUR CURSOR FOR
SELECT SON, COEF
FROM PARTARC
WHERE SON > 0;
OPEN CUR;
GOTO 300 WHERE :RETVAL <= 0;
LABEL 100;
FETCH CUR INTO :SON, :COEF;
GOTO 200 WHERE :RETVAL <= 0;
UPDATE STACK4 SET
INTDATA2 = 1, REALDATA2 = :COEF
WHERE KEY = :SON;
LOOP 100 WHERE :RETVAL = 1;
INSERT INTO STACK4 (KEY, INTDATA2, REALDATA2)
VALUES (:SON, 1, :COEF);
LOOP 100;
LABEL 200;
CLOSE CUR;
UNLINK PART;
LABEL 300;
UNLINK STACK4;
UNLINK PARTARC;
/* dynamic column titles! */
:COLTITLES = 1;
SELECT ENTMESSAGE ('$', 'P', 10) INTO :TITLE1 FROM DUMMY;
:REPCOLTITLE.30 = STRCAT (:P1NAME, ' ', :TITLE1);
:REPCOLTITLE.40 = STRCAT (:P2NAME, ' ', :TITLE1);
הדו"ח הקשור די פשוט אך יש שורת DUMMY.DUMMY:
= 1 AND ((STACK4.INTDATA STACK4.INTDATA2) OR
(STACK4.REALDATA STACK4.REALDATA2))