2016-05-18 15 views
0

Ich bin neu in Oracle.Ich habe Tow-Tabellen namens "st" und "mt". "Skey" ist die gemeinsame Spalte für zwei Tabellen.Ich wollte Daten einfügen in "mt" für alle "skey" -Werte von "st", außer wenn der Spaltenname "tes" in "st" ungleich "NOO" ist.Fügen Sie neue Datensätze in der zweiten Tabelle basierend auf Spalten in der ersten Tabelle ein

INSERT INTO SDATA.MT(RECNO,Skey,Date) 
VALUES ((SELECT MAX(RECNO) FROM SDATA.ST)+1,'hari..',sysdate) 
where skey in (select skey from SDATA.ST where tes <> 'NOO') 

Erste Fehlerbericht - SQL-Fehler: ORA-00933: SQL-Befehl beendet nicht richtig 00933. 00000 - "SQL-Befehl nicht richtig beendet"

+0

Können Sie Beispieldaten und gewünschte Ergebnisse bereitstellen? –

Antwort

0

Wenn die Logik hinter Ihrer Anfrage corrrect ist, Sie nur müssen die richtige Syntax:

INSERT INTO SDATA.MT(
        RECNO, 
        Skey, 
        Date 
        ) 
    SELECT MAX(RECNO) + 1, 
      'hari..', 
      SYSDATE 
     FROM C_WOMEN_PRD.MOSTATUS 
    WHERE skey IN (SELECT skey 
         FROM SDATA.ST 
        WHERE tes <> 'NOO') 

Sie müssen das Schlüsselwort VALUES feste Werte einzufügen:

INSERT INTO SDATA.MT(
         RECNO, 
         Skey, 
         Date 
         ) 
VALUES (1, 
     'something', 
     sysdate 
     ); 

Abhängig von den Daten in Tabellen, vielleicht haben Sie

WHERE skey NOT IN (SELECT skey 
          FROM SDATA.ST 
         WHERE tes = 'NOO') 

anstelle Ihrer Erkrankung benötigen; Aber das kann nur gesagt werden, wenn Sie wissen, wie Ihre Daten sind.

+0

immer noch Fehler SQL Fehler: einzigartige Einschränkung (% s.% S) verletzt –

+0

Vielen Dank .. "Not In" funktioniert.Viel hilfreich. –