2016-09-16 118 views
2

,所以我有這個表插入日期數據

RPG_RETCON (
    UNIQUE_ID  VARCHAR2(100 BYTE), 
    CONTAINER  VARCHAR2(100 BYTE), 
    DATA_POINT_NAME VARCHAR2(100 BYTE), 
    SOURCE_VALUE VARCHAR2(100 BYTE), 
    CSS_VALUE  VARCHAR2(100 BYTE), 
    STATUS   VARCHAR2(100 BYTE) 
) 

我,我試圖插入此select語句到該表。

INSERT INTO RPG_RETCON 
    (SELECT A.POOL_CUSIP_ID AS UNIQUE_ID, 
       '1_13_1C' AS CONTAINER, 
       'SECU_ACTL_STLM_DT' AS COLUMN_NAME1, 
      TO_CHAR(A.SECU_ACTL_STLM_DT), 
       TO_CHAR(B.SECU_ACTL_STLM_DT), 
       CASE 
        WHEN A.SECU_ACTL_STLM_DT = B.SECU_ACTL_STLM_DT 
        THEN 
         'PASS' 
        ELSE 
         'FAIL' 
       END 
        AS STATUS 
      FROM POOL_1_13_1C_TRGT A 
      LEFT JOIN POOL_1_13_1C_CSS B ON A.POOL_CUSIP_ID = B.POOL_CUSIP_ID); 

現在的問題是,SECU_ACTL_STLM_DT是日期字段,當我嘗試做插入,我得到一個無效的數字錯誤。如果我將TO_CHAR取消爲A.SECU_ACTL_STLM_DT, B.SECU_ACTL_STLM_DT, 我得到的月份無效。

注:我絕對不能改變

SOURCE_VALUE VARCHAR2(100 BYTE) 
CSS_VALUE  VARCHAR2(100 BYTE) 

- 在表結構... 他們需要VARCHAR2數據類型。

是否有任何建議,我可以在哪裏插入此選擇語句錯誤免費?

回答

1

我認爲你的代碼應該工作。但是,我會明確列出列併爲插入添加日期格式。或許,這將幫助:

INSERT INTO RPG_RETCON(UNIQUE_ID, CONTAINER, COLUMN_NAME1, SOURCE_VALUE, CSS_VALUE, STATUS) 
    SELECT A.POOL_CUSIP_ID AS UNIQUE_ID, '1_13_1C' AS CONTAINER, 
      'SECU_ACTL_STLM_DT' AS COLUMN_NAME1, 
      TO_CHAR(A.SECU_ACTL_STLM_DT, 'YYYY-MM-DD'), 
      TO_CHAR(B.SECU_ACTL_STLM_DT, 'YYYY-MM-DD'), 
      (CASE WHEN A.SECU_ACTL_STLM_DT = B.SECU_ACTL_STLM_DT 
       THEN 'PASS' 
       ELSE 'FAIL' 
      END) AS STATUS 
    FROM POOL_1_13_1C_TRGT A LEFT JOIN 
     POOL_1_13_1C_CSS B 
     ON A.POOL_CUSIP_ID = B.POOL_CUSIP_ID; 

這是可能的SECU_ACTL_STLM_DT一列不是日期和比較失敗。

+0

你是完全正確的......我剛剛檢查了 的另一張表POOL_1_13_1C_TRGT-有一個DATE數據類型。 POOL_1_13_1C_CSS - 具有此數據類型的VARCHAR2。 謝謝! –