2015-07-07 5 views
0

Мне нужно вставить запись в одну таблицу из другой таблицы, которая является точной копией другой таблицы, условие для ее размещения как при одной и той же записи match) поступает из другой таблицы, она обновит существующую запись, и когда придет новая запись, она введет запись.Вставьте запись в одну таблицу из другой таблицы с некоторыми критериями в oracle

Я написал запрос для этого, как показано ниже, пожалуйста, исправьте меня, если это возможно.

INSERT INTO TEMP1 (B,C,D,PROVIDER_ID,NATIONAL_PROVIDER_IDENTIFIER,TAXONIMY_CODE,F,G,H) 
SELECT W.B,W.C,W.D,W.PROVIDER_ID,W.NATIONAL_PROVIDER_IDENTIFIER,W.TAXONIMY_CODE,W.F,W.G,W.H 
FROM TEMP2 W LEFT JOIN TEMP1 A ON(A.provider_id = W.provider_id 
AND A.NATIONAL_PROVIDER_IDENTIFIER = W.NATIONAL_PROVIDER_IDENTIFIER 
AND A.TAXONOMY_CODE = W.TAXONOMY_CODE) 
WHERE W.SOURCE_ID = 'COSMOS' 
+0

Я с трудом читал, что первый абзац. Возможно, проблема с пунктуацией? – sstan

+0

с этим запросом всегда одна и та же запись, если соответствующие критерии входят в temp2, она снова будет вставляться в качестве новой записи, она должна обновить уже существующую запись в temp1..пожалуйста, помогите мне решить это. Спасибо – user2412576

+0

вы можете опубликовать пример ввода данные и ожидаемые результаты, пожалуйста, – davegreen100

ответ

0

Это все еще немного неясно для меня, но это звучит, как вы хотите, чтобы с помощью MERGE statement.

Если да, то ваше заявление будет выглядеть примерно так (надеюсь, я понял вашу модель данных)

MERGE INTO TEMP1 a 
USING (
    SELECT B,C,D,PROVIDER_ID,NATIONAL_PROVIDER_IDENTIFIER,TAXONIMY_CODE,F,G,H 
    FROM TEMP2 
    WHERE SOURCE_ID = 'COSMOS' 
) w 
ON (a.provider_id = w.provider_id AND 
    a.NATIONAL_PROVIDER_IDENTIFIER = w.NATIONAL_PROVIDER_IDENTIFIER AND 
    a.TAXONOMY_CODE = w.TAXONOMY_CODE 
) 
WHEN MATCHED THEN 
    UPDATE SET a.b = w.b, 
      a.c = w.c, 
      a.d = w.d, 
      a.f = w.f, 
      a.g = w.g, 
      a.h = w.h 
WHEN NOT MATCHED THEN 
    INSERT (a.B,a.C,a.D,a.PROVIDER_ID,a.NATIONAL_PROVIDER_IDENTIFIER,a.TAXONIMY_CODE,a.F,a.G,a.H) 
    VALUES (w.B,w.C,w.D,w.PROVIDER_ID,w.NATIONAL_PROVIDER_IDENTIFIER,w.TAXONIMY_CODE,w.F,w.G,w.H); 
+0

Большое спасибо, очень хорошо со мной, поэтому я доверяю только переполнению стека .. :) – user2412576

+0

Рад, что это помогло. Не забудьте отметить ответ, если он был вам полезен. – sstan

Смежные вопросы