請幫幫我,我得到了下面的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