Oracle 允許 ROUND(SUM(col)*0.0005, 2) 直接出現在 SELECT 列表中並搭配 GROUP BY,但 MySQL 嚴格執行 ONLY_FULL_GROUP_BY,會報錯。
SELECT ROUND((SUM(ORDERAMOUNT)*0.0005),2) AS s
FROM boc_payinfo
WHERE ... GROUP BY mechdate
SELECT SUM(t.s) FROM (
SELECT ROUND((SUM(ORDERAMOUNT)*0.0005),2) AS s
FROM boc_payinfo
WHERE ... GROUP BY mechdate
) t
mechdate 分組計算每日金額 s。SUM(t.s),不再涉及 GROUP BY,符合 MySQL 規範。若需保留每日明細並顯示總計,可用 WITH ROLLUP 或應用層彙總。避免在 SELECT 列表放置非聚合且未分組的欄位。