The following query does not work:

SELECT

T1.ACCOUNT_NUM

,T1.ACCOUNT_MODIFIER_NUM

,T1.DEPOSIT_TYPE_CD

,T1.DEPOSIT_TERM

,CASE

WHEN T1.DEPOSIT_TYPE_CD='5021' THEN

'92550000'

ELSE

CASE

WHEN T4.LEDGER_SUBJECT_ID_01= '00000000' THEN ''

ELSE COALESCE(T4.LEDGER_SUBJECT_ID_01,'')

END

END V_LEDGER_SUBJECT_ID

,COALESCE(T10.INTERNAL_PARTY_ID,'') INTERNAL_PARTY_ID

,T5.SIGNE_DT

,T5.CLOSED_DT

,CASE

WHEN T1.FINANCE_ACCOUNT_TYPE_CD='20' THEN

COALESCE(T6.CURRENCY_CD,SUBSTR(T1.ACCOUNT_MODIFIER_NUM,3,3))

ELSE COALESCE(T7.CURRENCY_CD,SUBSTR(T1.ACCOUNT_MODIFIER_NUM,3,3))

END FINANCE_ACCOUNT_TYPE_CD

,CASE

WHEN T1.FINANCE_ACCOUNT_TYPE_CD='20' THEN

COALESCE(T6.AGT_AMT,0)

ELSE

CASE

WHEN SUBSTR(COALESCE(T4.LEDGER_SUBJECT_ID_01,''),1,2) = '21' AND
T4.LEDGER_SUBJECT_ID_02 = '00000000'

THEN COALESCE(T7.Agt_Amt_003,0)- COALESCE(T7.Agt_Amt_007,0)

ELSE COALESCE(T7.Agt_Amt_003,0)

END

END V_ACCOUNT_BAL1

,CASE

WHEN T1.FINANCE_ACCOUNT_TYPE_CD='20' THEN

CASE

WHEN T8.AGT_DATE<20120515 THEN COALESCE(T6.AGT_AMT,0.0)

ELSE 0.0

END

ELSE 0.0

END V_INNER_MONTH_DELAY_ACCUM1

FROM T03_DEPOSIT_ACCOUNT T1

LEFT OUTER JOIN T03_AGT_SUBSECTION_RELA_H T3

ON T1.ACCOUNT_NUM=T3.ACCOUNT_NUM

AND T1.ACCOUNT_MODIFIER_NUM=T3.ACCOUNT_MODIFIER_NUM

AND T3.START_DATE<=20120515

AND T3.END_DATE>20120515

LEFT OUTER JOIN

( SELECT

Product_Subsection_Id

,MAX(

CASE

WHEN PROD_SUBJ_RELA_TYPE_CD = '01' THEN Ledger_Subject_Id

ELSE '00000000'

END

) Ledger_Subject_Id_01

,MAX(

CASE

WHEN PROD_SUBJ_RELA_TYPE_CD = '02' THEN Ledger_Subject_Id

ELSE '00000000'

END

) Ledger_Subject_Id_02

FROM T98_DC_PRO_SUB_SUBJECT_REF

WHERE PROD_SUBJ_RELA_TYPE_CD IN ('01','02')

GROUP BY Product_Subsection_Id

) T4

ON T3.PRODUCT_SUBSECTION_ID=T4.PRODUCT_SUBSECTION_ID

LEFT OUTER JOIN T03_AGREEMENT T5

ON T1.ACCOUNT_NUM=T5.ACCOUNT_NUM

AND T1.ACCOUNT_MODIFIER_NUM=T5.ACCOUNT_MODIFIER_NUM

LEFT OUTER JOIN T03_AGT_AMOUNT_H T6

ON T1.ACCOUNT_NUM=T6.ACCOUNT_NUM

AND T1.ACCOUNT_MODIFIER_NUM=T6.ACCOUNT_MODIFIER_NUM

AND T6.AGT_AMT_TYPE_CD IN('001','215')

AND T6.START_DATE<=20120515

AND T6.END_DATE>20120515

LEFT OUTER JOIN

(SELECT

Account_Num

,Account_Modifier_Num

,Currency_Cd

,SUM(

CASE

WHEN AGT_AMT_TYPE_CD = '001' THEN COALESCE(Agt_Amt,0.0)

ELSE 0.0

END

) Agt_Amt_001

,SUM(

CASE

WHEN AGT_AMT_TYPE_CD = '003' THEN COALESCE(Agt_Amt,0.0)

ELSE 0.0

END

) Agt_Amt_003

,SUM(

CASE

WHEN AGT_AMT_TYPE_CD = '007' THEN COALESCE(Agt_Amt,0.0)

ELSE 0.0

END

) Agt_Amt_007

FROM T03_AGT_AMOUNT_H_C

WHERE AGT_AMT_TYPE_CD IN ('001','003','007')

AND START_DATE<=20120515

AND END_DATE> 20120515

GROUP BY Account_Num,Account_Modifier_Num,Currency_Cd

) T7

ON T1.ACCOUNT_NUM=T7.ACCOUNT_NUM

AND T1.ACCOUNT_MODIFIER_NUM=T7.ACCOUNT_MODIFIER_NUM

LEFT OUTER JOIN T03_AGT_DATE_H T8

ON T1.ACCOUNT_NUM=T8.ACCOUNT_NUM

AND T1.ACCOUNT_MODIFIER_NUM=T8.ACCOUNT_MODIFIER_NUM

AND T8.Date_Type_Cd='002'

AND T8.START_DATE<=20120515

AND T8.END_DATE>20120515

LEFT SEMI JOIN

( SELECT

Account_Num

,Account_Modifier_Num

,Agt_Status_Type_Cd

,Start_Date

,Agt_Status_Reason_Cd

,Agt_Status_Cd

,End_Date

FROM T03_AGT_STATUS_H

WHERE Agt_Status_Type_Cd='01'

AND Agt_Status_Cd NOT IN('102','N03','AA2')

AND START_DATE<=20120515

AND END_DATE>20120515

)T9

ON T1.ACCOUNT_NUM=T9.ACCOUNT_NUM

AND T1.ACCOUNT_MODIFIER_NUM=T9.ACCOUNT_MODIFIER_NUM

LEFT OUTER JOIN

(

SELECT

Account_Num

,Account_Modifier_Num

,Agt_Party_Rela_Cd

,Start_Date

,Internal_Party_Id

,End_Date

FROM T03_AGT_INTER_ORG_RELA_H

WHERE Start_Date <= 20120515

AND End_Date > 20120515

AND Agt_Party_Rela_Cd = '24'

) T10

ON T1.ACCOUNT_NUM = T10.ACCOUNT_NUM

AND T1.ACCOUNT_MODIFIER_NUM = T10.ACCOUNT_MODIFIER_NUM

WHERE T1.ACCOUNT_MODIFIER_NUM <> '0202'

LIMIT 5;

However, when move "WHERE T1.ACCOUNT_MODIFIER_NUM <> '0202' " into the
innermost layer, add the coalesce, it works.

Can someone please tell me what's the rule here?

Thank you very much!

Reply via email to