2016-09-16 9 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が日付フィールドであると私は挿入を実行しようとするとき、私は無効な数のエラーを取得することです。 A.SECU_ACTL_STLM_DTにTO_CHARを取り除くと、 B.SECU_ACTL_STLM_DT、 月が無効になります。

注:私は絶対に

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

を変更することはできません - テーブル構造の中で... 彼らはVARCHAR2データ型である必要があります。

私はこの選択ステートメントをどこに挿入すればよいのですか?

答えて

1

あなたのコードはうまくいくはずです。しかし、私は明示的に列を列挙し、挿入の日付形式を追加します。おそらくこれは役立ちます。SECU_ACTL_STLM_DTいずれかの列が日付ではありませんとの比較が失敗している可能性があり

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; 

+0

あなたは絶対に正しいです... の他のテーブルを確認しました。POOL_1_13_1C_TRGT- DATEデータ型を持っています。 POOL_1_13_1C_CSS - このデータ型にはVARCHAR2があります。 ありがとうございます! –

関連する問題