请帮帮我,我得到了下面的SQL连接谓词无效的错误,这将是非常混乱,但如果你能帮帮我。提前致谢。连接谓词无效(SQL0338)
SELECT department.eaaitm,
RIGHT(LEFT(egacdt, 6), 2),
SUM(CASE department.eaaitm
WHEN '912' THEN egacam/2
ELSE egacam
END) AS suma,
SUM(CASE department.eaaitm
WHEN '700' THEN CASE data.eaaicl
WHEN '400' THEN -egacam
WHEN '402' THEN -egacam
WHEN '404' THEN -egacam
ELSE egacam
END
WHEN '912' THEN egacam/2
ELSE egacam
END/cuarat)
FROM mvxcdtpusd.fchacc department,
mvxcdtpusd.fchacc data
LEFT JOIN mvxcdtpusd.fgledg
ON data.eaaitm = egait1
AND data.eacono = 888
AND data.eaaitp = 1
AND egcono = 888
AND (egdivi = ?
AND (data.eadivi = ?
OR data.eadivi = ''))
AND (egdivi = ?
AND (department.eadivi = ?
OR department.eadivi = ''))
AND egacdt >= ?
AND egacdt <= ?
JOIN mvxcdtpusd.ccurra
ON (cudivi = (CASE egdivi
WHEN '300' THEN egdivi
ELSE '100'
END)
AND cucucd = 'USD'
AND LEFT(cucutd, 6) = LEFT(egacdt, 6)
AND ((cudivi = '300'
AND cucrtp = '50')
OR (cudivi <> '300'
AND culocd = 'USD'
AND cucrtp = '1'))
AND RIGHT(cucutd, 2) = '01')
WHERE egait3 = department.eaaitm
AND department.ealccd IN (0, 1)
AND department.eacono = 888
AND department.eaaitp = 3
AND data.eaaicl >= '400'
AND (department.eaaitm IN ('000')
OR department.eaaitm IN ('912')
AND data.eaaitm NOT IN ('5707310')
OR department.eaaitm IN ('914', '808')
AND data.eaaitm NOT IN ('5707310'))
GROUP BY department.eaaitm,
RIGHT(LEFT(egacdt, 6), 2)
ORDER BY department.eaaitm,
RIGHT(LEFT(egacdt, 6), 2)
----------------------------------- Ans:------ ------ ----------------------------- 我已经解决了。感谢所有
SELECT department.eaaitm,
RIGHT(LEFT(egacdt, 6), 2),
SUM(CASE department.eaaitm
WHEN '912' THEN egacam/2
ELSE egacam
END) AS suma,
SUM(CASE department.eaaitm
WHEN '700' THEN CASE data.eaaicl
WHEN '400' THEN -egacam
WHEN '402' THEN -egacam
WHEN '404' THEN -egacam
ELSE egacam
END
WHEN '912' THEN egacam/2
ELSE egacam
END/cuarat)
FROM mvxcdtpusd.fchacc department,
mvxcdtpusd.fchacc data
LEFT JOIN mvxcdtpusd.fgledg
ON data.eaaitm = egait1
AND data.eacono = 888
AND data.eaaitp = 1
AND egcono = 888
AND (egdivi = 100
AND (data.eadivi = 100
OR data.eadivi = ''))
AND egacdt >= 20120101
AND egacdt <= 20120131
JOIN mvxcdtpusd.ccurra
ON (cudivi = (CASE egdivi
WHEN '300' THEN egdivi
ELSE '100'
END)
AND cucucd = 'USD'
AND LEFT(cucutd, 6) = LEFT(egacdt, 6)
AND ((cudivi = '300'
AND cucrtp = '50')
OR (cudivi <> '300'
AND culocd = 'USD'
AND cucrtp = '1'))
AND RIGHT(cucutd, 2) = '01')
WHERE egait3 = department.eaaitm
AND department.ealccd IN (0, 1)
AND department.eacono = 888
AND department.eaaitp = 3
AND data.eaaicl >= '400'
AND (department.eaaitm IN ('000')
OR department.eaaitm IN ('912')
AND data.eaaitm NOT IN ('5707310')
OR department.eaaitm IN ('914', '808')
AND data.eaaitm NOT IN ('5707310'))
AND (egdivi = 100
AND (department.eadivi = 100
OR department.eadivi = ''))
GROUP BY department.eaaitm,
RIGHT(LEFT(egacdt, 6), 2)
ORDER BY department.eaaitm,
RIGHT(LEFT(egacdt, 6), 2)
这将是更好,如果你可以先缩进这些代码。看[这里](http://www.dpriver.com/pp/sqlformat.htm)。 – cctan 2012-02-14 02:26:44
请重新格式化,所以我们不必滚动。与其他联接语法是不是在某些RDBMS中允许 – 2012-02-14 02:29:20
混合逗号连接。 – 2012-02-14 02:36:30