db2 sqlstate 42972错误

时间:2014-09-02 20:20:06

标签: java sql db2

我在尝试执行此sql查询时遇到此错误

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与JOIN运算符或MERGE语句关联的ON子句 无效。 LINE NUMBER = 31。 SQLSTATE = 42972

2 个答案:

答案 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
    ;

看看是否有帮助

答案 1 :(得分:0)

这里有同样的错误。 (请注意,我的Table1没有行)

在我这边,我可以通过将其他(逗号分隔)表2更改为REAL内部联接来解决此问题。

示例来自

select xxx from Table1 t1, Table2 t2 
where (t2.col1 = t1.col1) and (t1.col2 = "whatever")

select xxx from Table1 t1
INNER JOIN Table2 t2 ON (t2.col1 = t1.col1)
where (t1.col2 = "whatever")

希望这对其他人有帮助。 (问题发生在DB2 9.7上)