2017-07-25 7 views
0

tabelle1 [email protected]ORA-01722 ungültige Nummer obwohl Typen

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) 

table3 evkuzmin_b2b_churn_ban_segment

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

Meine Abfrage entsprechen sollte. Hier schließe ich die ersten 2 Tabellen auf ban_key an und füge das Ergebnis in die dritte Tabelle ein. Die Typen stimmen überein, aber ich bekomme immer noch den Fehler. Warum?

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

Geben Sie für Nicht-Zahldaten in [email protected]_key: SELECT t2.ban_key VON [email protected] t2 WHERE 1 = 1 UND REGEXP_LIKE (t2.ban_key, '[^ [: digit:]]'); ' –

Antwort

0

Ihre ban_key in evkuzmin_b2b_churn_ban_segment (Tabelle 3) ist eine Zahl wie in den beiden anderen Tabellen (varchar) vergleichen.

Ihre a.ban_key ist die Nummer und b.ban_key ist varchar

+0

In' evkuzmin_b2b_churn_ban_segment' 'ban_key' ist die Nummer. Ich nehme es von 'fct_nc_crm_dims', wo es auch Nummer ist. Aber in 'stg_acrm_ban_attr' ist es varchar. Ich habe versucht, 'a.ban_key = TO_NUMBER (b.ban_key);' zu machen, habe aber den gleichen Fehler. – Evgenii

+0

Fehler scheint durch- WHERE a.ban_key = b.ban_key; –

+0

Ihr a.ban_key ist Nummer und b.ban_key ist varchar –

Verwandte Themen