CASE WHEN THEN END

SELECT ID,
               ORDER_ID,
               ACCOUNT_NO,
               CREATE_TIME,
               DR_CR_FLAG,
               BUSINESS_TYPE,
               PAYMENT_ORDER_NO,
               DR_CR_AMOUNT,
               CR_AMOUNT,
               PRE_CR_AMOUNT,
               ACCOUNT_AMOUNT,
               EXPENSE_FLAG
          FROM (SELECT ROW_NUMBER() OVER(PARTITION BY ORDER_ID, BUSINESS_TYPE, EXPENSE_FLAG ORDER BY VOUCHER_NO desc) RN,
                       T.ID,
                       T.ORDER_ID,
                       T.ACCOUNT_NO,
                       T.CREATE_TIME,
                       T.DR_CR_FLAG,
                       T.BUSINESS_TYPE,
                       T.PAYMENT_ORDER_NO,
                       T.DR_CR_AMOUNT,
                       T.CR_AMOUNT,
                       T.PRE_CR_AMOUNT,
                       T.ACCOUNT_AMOUNT,
                       T.EXPENSE_FLAG
                  FROM T_ACCOUNT_WATER T
                 WHERE T.ACCOUNT_NO = 1019659769267895
                   AND T.BUSINESS_TYPE != 'REFUND'
                   AND T.CREATE_TIME >= TO_DATE('2016-01-15','yyyy-mm-dd')
                   AND T.CREATE_TIME < TO_DATE('2016-01-15','yyyy-mm-dd') +1)
         WHERE RN = 1
           AND CASE
                 WHEN BUSINESS_TYPE = 'NBNKTRANS' THEN
                  DR_CR_FLAG
                 ELSE
                  'CR'
               END = 'CR'
        UNION ALL
        SELECT ID,
               ORDER_ID,
               ACCOUNT_NO,
               CREATE_TIME,
               DR_CR_FLAG,
               BUSINESS_TYPE,
               PAYMENT_ORDER_NO,
               DR_CR_AMOUNT,
               CR_AMOUNT,
               PRE_CR_AMOUNT,
               ACCOUNT_AMOUNT,
               EXPENSE_FLAG
          FROM (SELECT ROW_NUMBER() OVER(PARTITION BY ORDER_ID, BUSINESS_TYPE, EXPENSE_FLAG ORDER BY VOUCHER_NO desc) RN,
                       T.ID,
                       T.ORDER_ID,
                       T.ACCOUNT_NO,
                       T.CREATE_TIME,
                       T.DR_CR_FLAG,
                       T.BUSINESS_TYPE,
                       T.PAYMENT_ORDER_NO,
                       T.DR_CR_AMOUNT,
                       T.CR_AMOUNT,
                       T.PRE_CR_AMOUNT,
                       T.ACCOUNT_AMOUNT,
                       T.EXPENSE_FLAG
                  FROM T_ACCOUNT_WATER T
                 WHERE T.ACCOUNT_NO = 1019659769267895
                   AND T.BUSINESS_TYPE = 'REFUND'
                   AND T.CREATE_TIME >= TO_DATE('2016-01-15','yyyy-mm-dd')
                   AND T.CREATE_TIME < TO_DATE('2016-01-15','yyyy-mm-dd') +1);
                

猜你喜欢

转载自tangkuo.iteye.com/blog/2271500