Ошибка SAS - выражение, использующее equals (=), содержит компоненты разных типов данных - PullRequest
0 голосов
/ 06 ноября 2019

Я не могу определить проблему.

Ошибка получения при запуске ниже кода FYI - я запустил содержимое Proc и типы данных для OC.GRUPACCTNUMB и H.GRUPACCTNUMB в том же формате char len 17 / informat $ 17.

В сводке журнала указано: АФФЕКТИВНЫЙ КОД - ГРУППА ПО OC.GRUPACCTNUMB, CRS_CUSTNUMB, CORPNUMB, INT.RATETYPE, INT_RATE, VARY, FLATRATE, GRUPNAME

КОД НИЖЕ:

proc sql;
create table MDSRATE as
SELECT OC.GRUPACCTNUMB, CRS_CUSTNUMB, CORPNUMB, SUM (ACCTBALN), INT.RATETYPE, INT_RATE AS BASE_RATE, VARY, (INT_RATE+VARY) AS RATE, FLATRATE, GRUPNAME
FROM MDS_OC_DETL OC, 
MDS_OC_IRTE_OVRD OVRD, 
MDS_OC_INT_RATE INT,
MDS_BTCH_CRS CRS
WHERE OC.GRUPACCTNUMB = OVRD.GRUPACCTNUMB
AND (OVRD.ENDT='31.12.9999' OR OVRD.ENDT IS NULL)
AND OVRD.RATETYPE = INT.RATETYPE
AND INT.ENDT='31.12.9999'
AND OC.GRUPACCTNUMB = CRS.GRUPACCTNUMB
AND OC.ACCTSTUS = 'O'
AND OVRD.EFDT = (SELECT MAX(EFDT)
                 FROM MDS_OC_IRTE_OVRD E
                 WHERE E.GRUPACCTNUMB = OC.GRUPACCTNUMB)

AND OVRD.TIMECHNG = (SELECT MAX(TIMECHNG)
                     FROM MDS_OC_IRTE_OVRD F
                     WHERE F.GRUPACCTNUMB = OC.GRUPACCTNUMB
                     AND F.EFDT = (SELECT MAX(EFDT)

                                  FROM MDS_OC_IRTE_OVRD G
                                  WHERE G.GRUPACCTNUMB = OC.GRUPACCTNUMB))
AND CRS.DATE = (SELECT MAX(DATE)
          FROM MDS_BTCH_CRS H
/*          WHERE input(H.GRUPACCTNUMB,16.) = input(OC.GRUPACCTNUMB,16.))*/
          WHERE OC.GRUPACCTNUMB = H.GRUPACCTNUMB)
GROUP BY OC.GRUPACCTNUMB, CRS_CUSTNUMB, CORPNUMB, INT.RATETYPE, INT_RATE, VARY, FLATRATE, GRUPNAME;
run;
...