2014-09-02 3 views
0

Я получаю эту ошибку, когда я пытаюсь выполнить этот запрос будетdb2 SQLSTATE 42972 ошибка

INSERT INTO 
      AGG_QUALITY 
    SELECT 
      QIF.DATEDM_ID, 
      'Status' AS BREAKDOWN_TYPE, 
      HCR.VALUE, 
      QIF.SCANDEFINITION_ID, 
      QIF.QUALITYISSUE_VALUE, 
      COUNT(QIF.QUALITYISSUEFACT_ID), 
      COUNT(QRF.QUALITYRESOLUTIONFACT_ID) 

    FROM 
      QUALITYISSUEFACT QIF, 
      HUBCODERECORD HCR, 
      ITEMSTATUS ITS 
    LEFT JOIN 
      QUALITYRESOLUTIONFACT QRF 
    ON 
      QIF.QUALITYISSUEFACT_ID = QRF.QUALITYISSUEFACT_ID 
    WHERE 
      QIF.DATEDM_ID > startDateDMId 
      AND  QIF.DATEDM_ID <= endDateDMId  
      AND HCR.CODE = ITS.H_STATUS_TYPE 
      AND QIF.DIMENSION_ROM_PK = ITS.ITEMMASTER_ID 
    GROUP BY 
      QIF.DATEDM_ID, HCR.VALUE, QIF.SCANDEFINITION_ID, QIF.QUALITYISSUE_VALUE 
    ; 

DB21034E Команда была обрабатывались как оператор SQL, поскольку она не была допустимой командой процессора командной строки. Во время обработки SQL он возвращался: SQL0338N Предложение ON, связанное с оператором JOIN или в операторе MERGE , недействительно. НОМЕР ЛИНИИ = 31. SQLSTATE = 42972

+1

Не архаичные неявным соединяется с чистым современной 'join' синтаксисом. Вероятно, это поможет решить вашу проблему. Простое правило: просто укажите «Нет» в запятую в разделе 'from'. –

+0

Можете ли вы подтвердить, что столбец 'QUALITYISSUEFACT_ID' существует в таблицах' QUALITYISSUEFACT' и 'QUALITYRESOULTIONFACT'? –

+0

да, он существует. –

ответ

0

Попробуйте, как показано ниже с внутренними соединениями:

INSERT INTO 
      AGG_QUALITY 
    SELECT 
      QIF.DATEDM_ID, 
      'Status' AS BREAKDOWN_TYPE, 
      HCR.VALUE, 
      QIF.SCANDEFINITION_ID, 
      QIF.QUALITYISSUE_VALUE, 
      COUNT(QIF.QUALITYISSUEFACT_ID), 
      COUNT(QRF.QUALITYRESOLUTIONFACT_ID) 

    FROM 
      QUALITYISSUEFACT QIF 
      INNER JOIN 
      HUBCODERECORD HCR 
      ON QIF.DIMENSION_ROM_PK = ITS.ITEMMASTER_ID 
      INNER JOIN 
      ITEMSTATUS ITS 
      ON QIF.DIMENSION_ROM_PK = ITS.ITEMMASTER_ID 
    LEFT JOIN 
      QUALITYRESOLUTIONFACT QRF 
    ON 
      QIF.QUALITYISSUEFACT_ID = QRF.QUALITYISSUEFACT_ID 
    WHERE 
      QIF.DATEDM_ID > startDateDMId 
      AND  QIF.DATEDM_ID <= endDateDMId  
    GROUP BY 
      QIF.DATEDM_ID, HCR.VALUE, QIF.SCANDEFINITION_ID, QIF.QUALITYISSUE_VALUE 
    ; 

посмотреть, если это помогает

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