Слияние и сопоставление данных в Oracle - PullRequest
0 голосов
/ 03 июня 2011

Я пытаюсь собрать данные из 2 отдельных схем. Из-за сложности отдельного запроса, который получит все данные, произойдет сбой сервера базы данных, я создал отдельные таблицы и заполнил их всеми необходимыми мне данными. Теперь мне просто нужно объединить данные и сопоставить столбцы, чтобы потом можно было удалить все повторяющиеся строки. Ниже приведены два запроса, которые я создал, чтобы вернуть результаты, которые я ищу. Моя проблема в том, что при выполнении второго запроса я получаю следующую ошибку:

   Error at Command Line:7 Column:4
   Error report:
   SQL Error: ORA-00904: "BOF_FOR_CHUCKSIMPSON"."BATCH_ID": invalid identifier
   00904. 00000 -  "%s: invalid identifier"
   *Cause:    
   *Action

Может ли кто-нибудь помочь мне понять, что происходит?

Запрос 1

 CREATE TABLE BOF_FOR_CHUCKSIMPSON AS
    SELECT 
    bbp.SUBCAR "Treadwell", HMM.LADLE "BOTTLE CAR",
    bbp.BATCH_ID "Batch ID",
    TO_CHAR(bbp.START_POUR, 'yyyy/mm/dd hh24:MI:ss') "Start Pour Time",
    TO_CHAR(bbp.END_POUR, 'yyyy/mm/dd hh24:MI:ss') "End Pour Time",
    TO_CHAR(hmm.sched_cast_date, 'yyyy/mm/dd hh24:MI:ss') "Sched Cast Date"
    FROM bof_batch_pour bbp, rouge.hmm_iron_cast_ladle@idbs1 hmm
    WHERE bbp.subcar=hmm.ladle
    AND TO_CHAR(hmm.sched_cast_DATE, 'yyyymmddhh24MIss') = TO_CHAR(bbp.SCHED_CAST_DATE, 'yyyymmddhh24MIss')
    AND bbp.START_POUR>='25-MAY-11';
    CREATE TABLE BOF_FOR_CHUCKSIMPSON2 AS
    SELECT bofcs.BATCH_ID "Batch ID", bofcs.sample_time "Sample Time",
    bcs.SILICON "Si", bcs.SULPHUR S, bcs.MANGANESE "Mn", bcs.PHOSPHORUS P,
    bofcs.TEMPERATURE "Temperature"
    FROM bof_chem_sample bcs, bof_celox_sample bofcs
    WHERE bofcs.SAMPLE_CODE                                   = bcs.SAMPLE_CODE
    AND bofcs.BATCH_ID                                        = bcs.BATCH_ID
    AND bofcs.TEMPERATURE                                    > 0
    AND bcs.SAMPLE_CODE                                       = 'D1'
    AND bofcs.SAMPLE_CODE                                   = bcs.SAMPLE_CODE
    AND bofcs.sample_time>'25-may-11'
    AND bofcs.sample_time<sysdate

Запрос 2

    merge into bof_FOR_cHUCKSIMPSON2
    using bof_FOR_cHUCKSIMPSON
    on (bof_FOR_cHUCKSIMPSON.batch_id=bof_FOR_cHUCKSIMPSON2.batch_id)
    when matched
    then
     update
    SET bof_FOR_cHUCKSIMPSON.BATCH_ID = bof_FOR_cHUCKSIMPSON2.bATCH_ID
    WHEN NOT MATCHED
       THEN
          INSERT (bof_FOR_cHUCKSIMPSON2.bATCH_ID
              VALUES (99999);

1 Ответ

3 голосов
/ 03 июня 2011

Вы использовали смешанные имена в двойных кавычках в своем операторе создания таблицы, например:

bbp.BATCH_ID "Batch ID"

Поэтому в этой таблице нет столбца с именем BATCH_ID, но есть столбец с именем "Batch ID", и на него можно ссылаться только таким образом, т.е. в смешанном регистре и в двойных кавычках.

...