2016-04-27 15 views
0

Ich versuche, eine temporäre Tabelle in meine Haupttabelle zu fusionieren um Duplikate zu vermeiden:Teradata merge Spalte/Parameter table.A.A nicht existiert

MERGE INTO MYTABLE A USING 
    (
     SELECT Y, Z, X 
     FROM MYTABLE_TEMP T 
     JOIN (SELECT X FROM TABLE_X 
     WHERE COLUMN_N = '81205' GROUP BY 1) S ON S.X = T.X 
    ) B 
    ON (A.Y = B.Y) AND (A.X = B.X) 
WHEN MATCHED THEN UPDATE SET A.LOAD_DS = B.LOAD_DS 
WHEN NOT MATCHED THEN INSERT VALUES (B.Y, B.Z, B.X, B.LOAD_DS);

ich den Fehler: MERGE fehlgeschlagen. 3810: Spalte/Parameter 'MYTABLE.A.A' existiert nicht.

Antwort

0

Sie dürfen den Zielspaltennamen in der SET-Klausel nicht qualifizieren, die gleiche Regel existiert für UPDATE-Anweisungen.

MERGE INTO MYTABLE A USING 
    (
     SELECT Y, Z, X 
     FROM MYTABLE_TEMP T 
     JOIN (SELECT X FROM TABLE_X 
     WHERE COLUMN_N = '81205' GROUP BY 1) S ON S.X = T.X 
    ) B 
    ON (A.Y = B.Y) AND (A.X = B.X) 
WHEN MATCHED THEN UPDATE SET /*remove the A.*/ LOAD_DS = B.LOAD_DS 
WHEN NOT MATCHED THEN INSERT VALUES (B.Y, B.Z, B.X, B.LOAD_DS);