Вставить в таблицу с минусом

#sql #oracle

#sql #Oracle

Вопрос:

Я пытаюсь вставить некоторые данные в таблицу с помощью операции минус. У меня есть моя таблица (SG_AN_KZ) и таблица stag, которую я использую для извлечения некоторых данных, чтобы сделать минус. Я также извлекаю данные из внутреннего соединения, чтобы выполнить операцию минус. Проблема в том, что запрос не работает, и я не могу понять причину. Здесь весь запрос:

 INSERT INTO SG_AN_KZ (ID, CODE, TIPO_RECORD, SYSCREATEDATE, SYSCREATEUSER, SYSUPDATEDATE, SYSUPDATEUSER, FLAG_DELETED, ID_PN) 
 (SELECT (SELECT ROWNUM   ID_KZ, CODE, TIPO_RECORD, systimestamp, 967, systimestamp, 967, 0, ID_PN) FROM
     (SELECT Q1.CODE, Q1.TIPO_RECORD, systimestamp, 967, systimestamp, 967,0,Q2.ID
      FROM
       (SELECT DISTINCT S.CODE, S.TIPO_RECORD FROM STAG_SG_AN_KZ S
       INNER JOIN SG_AN_PN P 
       ON P.CODE = S.CODE)Q1,
       (SELECT DISTINCT P.ID FROM SG_AN_PN P
       INNER JOIN STAG_SG_AN_KZ S
       ON S.CODE = P.CODE) Q2,
       STAG_SG_AN_KZ S 
      WHERE S.CODE = Q1.CODE)  
     MINUS
     SELECT CODE, TIPO_RECORD, ID_PN from SG_AN_KZ; 

Errore(118,2): PL/SQL: SQL Statement ignored
Errore(119,99): PL/SQL: ORA-00923: parola chiave FROM non trovata dove prevista
  

У тебя есть какие-нибудь идеи?
заранее благодарю вас.

Комментарии:

1. Ужасно неправильный запрос. Укажите, что вы хотите.. И укажите структуру таблицы.

2. У вас много вложенных запросов, которые, вероятно, вам действительно не нужны. Попробуйте разделить ваш запрос с помощью CTE, это прояснит структуру запроса и поможет вам понять проблему.

3. Начните с подсчета круглых скобок,, которые не сбалансированы; но также находятся в неправильных местах. Но вы можете переосмыслить и упростить…