ВЫБЕРИТЕ из ВСТАВКИ, генерирующей ORA-00933 - PullRequest
0 голосов
/ 25 октября 2019

Попытка получить самую последнюю дату из двух разных таблиц с разными форматами.

INSERT INTO TEMPDATETABLE
SELECT T.SORDEGR_DEGC_DATE, 
   G.SHRDGMR_TERM_CODE_GRAD, 
   G.SHRDGMR_GRAD_DATE,
   T.SORDEGR_DEGC_CODE,
   G.SHRDGMR_DEGS_CODE,
   T.SORDEGR_SBGI_CODE,
   S.SORBCHR_SBGI_CODE,
   P.SPRIDEN_PIDM
FROM SORDEGR T, SHRDEGR G, SPRIDEN P, SORBCHR S
WHERE P.SPRIDEN_PIDM = T.SORDEGR_PIDM
AND P.SPRIDEN_PIDM = G.SHRDGMR_PIDM
AND P.SPRIDEN_CHANGE_IND IS NULL
AND T.SORDEGR_DEGC_DATE IS NOT NULL
AND G.SHRDGMR_GRAD_DATE IS NOT NULL
AND SUBSTR(G.SHRDGMR_DEGC_CODE, 1, 1) NOT IN ('A', 'C')
AND G.SHRDGMR_DEGS_CODE = 'AW'  
AND ((SUBSTR(T.SORDEGR_DEGC_CODE, 1, 1) NOT IN ('A', 'U', '0'))
AND  EXISTS
    (SELECT 'X'
    FROM SORBCHR S
    WHERE T.SORDEGR_SBGI_CODE = S.SORBCHR_SBGI_CODE
    AND S.SORBCHR_BCHR_CODE IN ('U', 'C')))
SELECT TO_CHAR(MAX(SORDEGR_DEGC_DATE), 'YYYYMM') AS DEGDATE1,
MAX(SHRDGMR_TERM_CODE_GRAD) AS DEGDATE2 
    CASE DEGDATE
    WHEN DEGDATE1 > DEGDATE2 THEN DEGDATE;
    WHEN DEGDATE2 > DEGDATE1 THEN DEGDATE;
    ELSE NULL;
    END CASE;
FROM TEMPDATETABLE
WHERE SPRIDEN_PIDM =

В надежде, что оператор CASE предоставит самую последнюю дату, но получит ORA-00933 (команда SQL неправильно завершилась) на2-й ВЫБОР.

...