2017-07-25 3 views
0

TABLE1 [email protected]ORA-01722タイプは

Name      Null  Type   
--------------------------- -------- ------------- 
BAN_KEY      NOT NULL NUMBER(9)  
CLIENT_NAME       VARCHAR2(300) 
CLIENT_INN       VARCHAR2(40) 
EFFECTIVE_DATE    NOT NULL DATE   
EXPIRATION_DATE      DATE 

table2の[email protected]

Name    Null Type   
---------------- ---- ------------- 
SEGMENT_CRM   VARCHAR2(150) 
BAN_KEY    VARCHAR2(32) 

表3のevkuzmin_b2b_churn_ban_segment

Name  Null Type   
----------- ---- ------------- 
BAN_KEY   NUMBER(9)  
CLIENT_NAME  VARCHAR2(300) 
CLIENT_INN  VARCHAR2(40) 
SEGMENT_CRM  VARCHAR2(150) 

私のクエリと一致する必要がありますけれども、無効な番号。ここでは、ban_keyの最初の2つのテーブルを結合し、その結果を3番目のテーブルに挿入します。タイプは一致しますが、まだエラーが発生します。どうして? evkuzmin_b2b_churn_ban_segmentで

INSERT INTO evkuzmin_b2b_churn_ban_segment 
SELECT a.ban_key, a.client_name, a.client_inn, b.segment_crm FROM(
    SELECT ban_key, client_name, client_inn 
    FROM(
    SELECT ban_key,client_name, client_inn, 
     ROW_NUMBER() OVER (PARTITION BY ban_key, client_inn ORDER BY effective_date DESC) AS rn 
    FROM [email protected] 
    WHERE expiration_date >= TO_DATE('01.04.2016','DD.MM.YYYY') OR expiration_date IS NULL --1ST DAY OF REPORTING PERIOD 
) 
    WHERE rn = 1 
) a, [email protected] b 
WHERE a.ban_key = b.ban_key; 
+0

[email protected]_keyにおける非数値データを探しているです: ' [email protected] T2から t2.ban_key を選択 WHERE 1 = 1 AND REGEXP_LIKE(t2.ban_key、 '[^ [:digit:]]'); ' –

答えて

0

あなたban_key(表3)は、他の二つのテーブル(VARCHAR)と比較として数です。

あなたa.ban_keyは数とb.ban_keyがvarchar型

+0

'evkuzmin_b2b_churn_ban_segment'の' ban_key'は数値です。私は 'fct_nc_crm_dims'から取得します。しかし 'stg_acrm_ban_attr'ではvarcharです。私は 'a.ban_key = TO_NUMBER(b.ban_key);'を実行しようとしましたが、同じエラーが発生しました。 – Evgenii

+0

エラーがスローされているようです - どこにa.ban_key = b.ban_key; –

+0

あなたのa.ban_keyは数字で、b.ban_keyはvarcharです –