первый раз при переполнении стека
Я пытаюсь портировать SQL с Oracle 11 G на Netezza.
Но ошибка: эта форма коррелированного запроса не поддерживается - рассмотрите возможность переписывания
и я знаю, что Netezza использовать не подзапрос в списке выбора
но я не могу представить этот запрос Netezza:
Вот SQL:
WITH TABLE1 AS
(
SELECT '201712' AS SETLYM , TO_CHAR(LAST_DAY ('201712')||'01'), YYYYMMDD) AS
SETLDT
FROM DUAL)
SELECT /* USE_NL ( PDT A B C E) LEADING (PDT A B C E)
INDEX(A IXCTRN09)*/
1
AS NHLCNCLSIGNUAL
, BAS.SETLYM
, BAS.SETLDT
, A.INPCNO
, A.PDTCD
, A.TPFNGRCD
,A.INSCTRDFNDT
,A.INSOPNDT
, A.INSEDDT
, B.CTRSTSCD
, C.CHGSC
,C.CHGBSNDCD
,C.CHGBASDT
,C.CTRCRCCNCLCD
, E.SPCURCD
(SELECT SUM(PA APPLPREM)
FROM TBCTRDETAIL PA
WHERE PA.INPCNO = A.lNPCNO
AND PA.SPCURCD =E.SPCURCD
AND NVL ( PA . CTRCRCCNCLCD, '1') = '1'
AND (PA.INPCNO, PA CTROBUMSQNO,
PA SPCURCD, PA.CHGSC) IN (
SELECT INPCNO, CTROBUMSQNO, SPCURCD, MAX (CHGSC)
FROM TBCTRDETAIL
WHERE
NVL ( CTRCRCCNCLCD ,'1')='1'
AND INPCNO =PA.INPCNO
AND CTROBUMSONO =PA.CTROBUMSQNO
AND SPCURCD = PA.SPCURCD
GROUP BY INPCNO, CTROBUMSQNO, SPCURCD )
AS APPLPREM
,SUM(E.MDFCPREM) as MDFCPREM
FROM
TBSETL BAS
, TBCTRPDT PDT
,TBCTRMA A
,TBCTRSTATUS B
,TBCTRCHGINFO C
, TBCTRDETAIL E
WHERE 1=1
AND PDT.DATASTSCD ='0'
AND BAS.SETLDT BETWEEN PDT.APPLSTDT AND PDT.APPLEDDT
AND A.CTRBSNDCD='04'
AND A.INSOPNDT>=TO_CHAR(TO_NUMBER (SUBSTR(BAS.SETL YM,1,4))-1)|| '0101'
AND BAS.SETLDT BETWEEN A.INSOPNDT AND A.INSEDDT
AND NVL(A.CTRCRCCNCLCD , '1')='1'
AND BAS.SETLDT||'9999' BETWEEN A.CHGHSTSTNO AND A.CHGHSTEDNO
AND A.PDTCD =PDT.PDTCD
AND A TPFNGRCD=(CASE WHEN PDT.FMP DPDTHCLFCD-='1' THEN '41'
WHEN PDT.FMP DPDTMCLFCD='2' THEN '42'
ELSE ' ' END)
AND B.CTRSTSCD IN ('01', '06' , '98')
AND NVL (B.CTRCRCCNCLCD, '1')='1'
AND BAS.SETLDT||'9999' BETWEEN B.CHGHSTSTNO AND B.CHGHSTEDNO
AND B.INPCNO =A.INPCNO
AND C.CHGBSNDCD NOT IN ('61','63','70')
AND C.ACTGBASDT <=BAS.SETLDT
AND C.INPCNO=A.INPCNO
AND E.INPCNO=C.INPCNO
AND E.CHGCG =C.CHGCG
GROUP BY BAS SETLYM, BAS.SETLDT,A.INPCNO ,A.PDTCD,
A.TPFNGRCD , A.INSCTRDFNDT ,A.INS OP NDT ,A.INSEDDT ,
B.CTRSTSCD, C.CHGSC, C.CHGBSNDCD, C.CHGBASDT,
C.CTRCRCCNCLCD, E.SPCURCD;`
ОШИБКА: (2) Эта форма коррелированного запроса не поддерживается - рассмотрите возможность перезаписи
Как мне переписать этот запрос для Netezza? Пожалуйста, помогите.