我该如何逃避<>对于XML文件中的此SQL

时间:2015-10-01 14:59:39

标签: sql xml spring

我正在尝试将以下sql存储在XML文件中的bean中。我试图逃避大于和小于标志,但我似乎仍然在Eclipse中出现错误。我一定不明白如何正确地逃避这些迹象。我计算的数字少于六个,而不是标志,我试图逃脱。

这是我的尝试:

<property name="SQL" value="&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;"
"SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') SQL_RUN_DT
  ,'STG_DISB_HOLD_TH' SRC_TBL
  ,A1.DISB_DT
  ,A1.CPC
  ,A1.AWARD_YR  
  ,COUNT(1) ROW_CNT
  ,SUM(A1.APPL_NBR) APPL_NBR_SUM
  ,SUM(A1.TSYS_SCHL_ID) TSYS_SCHL_ID_SUM
  ,SUM(TO_NUMBER(A1.DISB_NBR)) DISB_NBR_SUM
  ,SUM(A1.DISB_SEQ_NBR) DISB_SEQ_NBR_SUM    
  ,SUM(CASE WHEN A1.DISB_STAT_CD = 'R' AND A1.DISB_SEQ_NBR = 1 THEN 1
            ELSE A1.INTNL_APPL_SEQ_NBR + 1
            END) INTERNAL_DISB_SEQ_SUM 
  ,MIN(A1.DISB_RCVD_DT) DISB_RCVD_DT_MIN
  ,MAX(A1.DISB_RCVD_DT) DISB_RCVD_DT_MAX
  ,SUM(CASE WHEN A1.DISB_STAT_CD = 'P' THEN 1 ELSE 0 END) DISB_STAT_CD_P
  ,SUM(CASE WHEN A1.DISB_STAT_CD = 'R' THEN 1 ELSE 0 END) DISB_STAT_CD_R
  ,MIN(A1.PYMT_START_DT) PYMT_START_DT_MIN
  ,MAX(A1.PYMT_START_DT) PYMT_START_DT_MAX
  ,COUNT(DISTINCT A1.SCHL_ENROLL_CD) SCHL_ENROLL_CD_CNT
  ,SUM(TO_NUMBER(A1.NET_TRANS_CD)) NET_TRANS_CD_SUM
  ,SUM(A1.NET_TRANS_AMT) NET_TRANS_AMT_SUM
  ,SUM(CASE WHEN A1.DISB_STAT_CD = 'R' AND A1.DISB_SEQ_NBR = 1 AND A1.NET_C_OR_D_IND = 'D' THEN A1.NET_TRANS_AMT + A1.NET_TRANS_AMT
            WHEN A1.DISB_STAT_CD = 'R' AND A1.DISB_SEQ_NBR = 1 AND A1.NET_C_OR_D_IND <> 'D' THEN A1.NET_TRANS_AMT - A1.NET_TRANS_AMT
            WHEN (A1.DISB_STAT_CD <> 'R' OR A1.DISB_SEQ_NBR <> 1) AND A1.NET_C_OR_D_IND = 'D' THEN A1.SUM_NET_AMT + A1.NET_TRANS_AMT
            WHEN (A1.DISB_STAT_CD <> 'R' OR A1.DISB_SEQ_NBR <> 1) AND A1.NET_C_OR_D_IND <> 'D' THEN A1.SUM_NET_AMT - A1.NET_TRANS_AMT
            ELSE 0
            END) SUM_NET_AMT_SUM 
  ,SUM(CASE WHEN A1.ENRL_STATUS_CD = 'F' THEN 1 ELSE 0 END) ENRL_STATUS_CD_F
  ,SUM(CASE WHEN A1.ENRL_STATUS_CD = 'Q' THEN 1 ELSE 0 END) ENRL_STATUS_CD_Q
  ,SUM(CASE WHEN A1.ENRL_STATUS_CD = 'H' THEN 1 ELSE 0 END) ENRL_STATUS_CD_H
  ,SUM(CASE WHEN A1.ENRL_STATUS_CD = 'L' THEN 1 ELSE 0 END) ENRL_STATUS_CD_L
  ,SUM(CASE WHEN A1.ENRL_STATUS_CD IS NULL THEN 1 ELSE 0 END) ENRL_STATUS_CD_NULL  
  ,COUNT(DISTINCT A1.PGM_CIP_CD) PGM_CIP_CD_CNT
  ,COUNT(DISTINCT A1.LEGACY_USER_ID) LEGACY_USER_ID_CNT
  ,COUNT(DISTINCT A1.MAINT_APP) MAINT_APP_CNT
  ,MIN(A1.MAINT_DTM) MAINT_DTM_MIN
  ,MAX(A1.MAINT_DTM) MAINT_DTM_MAX
  ,COUNT(DISTINCT A1.MAINT_USERID) MAINT_USERID_CNT
FROM
(
SELECT LM.TEACH_MASTER_ID
  ,SAM.APPL_NBR
  ,TO_NUMBER(SAM.AWARD_YR) AWARD_YR
  ,SAM.TSYS_SCHL_ID
  ,SAM.AWARD_NBR
  ,SAM.DISB_NBR
  ,SAM.DISB_SEQ_NBR
  ,SAM.CPC
  ,SAM.DISB_DT
  ,SAM.DISB_RCVD_DT
  ,SAM.DISB_STAT_CD
  ,SAM.PYMT_START_DT
  ,SAM.SCHL_ENROLL_CD
  ,SAM.NET_TRANS_CD 
  ,CASE WHEN SAM.NET_C_OR_D_IND = 'C' THEN SAM.NET_TRANS_AMT * -1
        WHEN SAM.NET_C_OR_D_IND IS NULL THEN 0
        ELSE SAM.NET_TRANS_AMT
        END NET_TRANS_AMT
  ,CASE WHEN SAM.NET_C_OR_D_IND = 'C' THEN SAM.GROSS_TRANS_AMT * -1
        WHEN SAM.NET_C_OR_D_IND IS NULL THEN 0
        ELSE SAM.GROSS_TRANS_AMT
        END GROSS_TRANS_AMT
  ,CASE WHEN SAM.NET_C_OR_D_IND = 'C' THEN SAM.FEE_TRANS_AMT * -1
        WHEN SAM.NET_C_OR_D_IND IS NULL THEN 0
        ELSE SAM.FEE_TRANS_AMT
        END FEE_TRANS_AMT
  ,CASE WHEN SAM.NET_C_OR_D_IND = 'C' THEN SAM.REBATE_TRANS_AMT * -1
        WHEN SAM.NET_C_OR_D_IND IS NULL THEN 0
        ELSE SAM.REBATE_TRANS_AMT
        END REBATE_TRANS_AMT
  ,SAM.MAINT_DTM
  ,SAM.MAINT_USERID
  ,SAM.ENRL_STATUS_CD
  ,SAM.PGM_CIP_CD
  ,'BATCH' AS LEGACY_USER_ID
  ,'BATCH' AS MAINT_APP
  ,SAM.NET_C_OR_D_IND
  ,ROW_NUMBER() OVER (PARTITION BY SAM.APPL_NBR, SAM.AWARD_YR, SAM.TSYS_SCHL_ID, SAM.AWARD_NBR, SAM.DISB_NBR 
                      ORDER BY DTSEQ.INTNL_APPL_SEQ_NBR DESC) ROW_NUM_PART
  ,COALESCE(DTSEQ.INTNL_APPL_SEQ_NBR,0) INTNL_APPL_SEQ_NBR
  ,DTSEQ.CHG_GROSS_TRANS_AMT DT_CHG_GROSS_TRANS_AMT
  ,DTSEQ.CHG_NET_TRANS_AMT DT_CHG_NET_TRANS_AMT
  ,DTSEQ.CHG_FEE_TRANS_AMT DT_CHG_FEE_TRANS_AMT
  ,DTSEQ.CHG_REBATE_TRANS_AMT DT_CHG_REBATE_TRANS_AMT
  ,COALESCE(DTSEQ.SUM_GROSS_AMT,0) SUM_GROSS_AMT
  ,COALESCE(DTSEQ.SUM_NET_AMT,0) SUM_NET_AMT
  ,COALESCE(DTSEQ.SUM_FEE_AMT,0) SUM_FEE_AMT
  ,COALESCE(DTSEQ.SUM_REBATE_AMT,0) SUM_REBATE_AMT
FROM MYSCHEMA.TEACH_MASTER LM
JOIN MYSCHEMA.STG_DISB_HOLD SAM
ON LM.APP_NUM_LEGACY = SAM.APPL_NBR
AND LM.ATTEND_SCHL_MASTER_ID = SAM.TSYS_SCHL_ID
AND LM.AWARD_YR = TO_NUMBER(SAM.AWARD_YR)
LEFT JOIN MYSCHEMA.STG_DISB_TRANS DTSEQ
   ON SAM.APPL_NBR = DTSEQ.APPL_NBR
  AND SAM.AWARD_YR = DTSEQ.AWARD_YR
  AND SAM.TSYS_SCHL_ID = DTSEQ.TSYS_SCHL_ID
  AND SAM.AWARD_NBR = DTSEQ.AWARD_NBR
  AND SAM.DISB_NBR = DTSEQ.DISB_NBR
WHERE SAM.DISB_STAT_CD IN ('R','P')
  AND SAM.NET_TRANS_CD IN ('0102','0131','0161','0189','0200')
) A1
WHERE A1.ROW_NUM_PART = 1
GROUP BY TO_CHAR(SYSDATE,'YYYY-MM-DD')
  ,'STG_DISB_HOLD_TH'
  ,A1.DISB_DT
  ,A1.CPC
  ,A1.AWARD_YR  
;"/>

1 个答案:

答案 0 :(得分:1)

你必须逃避所有

        WHEN A1.DISB_STAT_CD [..snip..] A1.NET_C_OR_D_IND <> 'D' THEN A1.NET_TRANS_AMT - A1.NET_TRANS_AMT
                                                          ^^--missed a bunch of these

另外,下一点没有意义:

<property name="SQL" value="&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;"
                           ^---start attribute              end attribute --^
"SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') SQL_RUN_DT
^---attribute value with no name for it
相关问题