【发布时间】:2014-09-02 20:20:06
【问题描述】:
当我尝试执行此 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 子句 无效。第 31 行。 SQLSTATE=42972
【问题讨论】:
-
不要使用干净的现代
join语法进行过时的隐式连接。这可能会解决你的问题。一个简单的规则:在from子句中对逗号说“不”。 -
您能否确认
QUALITYISSUEFACT_ID列同时存在于QUALITYISSUEFACT和QUALITYRESOULTIONFACT表中?