我知道这个问题已经得到解答,但由于我缺乏 mysql 的经验,我无法从响应中破译解决方案,所以请原谅我再次提出同样的问题。我正在将 ms-access 查询转换为 mysql,这对我来说是一个痛苦的世界...我遇到的问题是我在“having 子句”中得到“Uknown 列
Big Ditch
。Begindate
”。
我试过这个:
SELECT Sum(datediff(`Big Ditch`.`EndDate`,`Big Ditch`.`BeginDate`)*`Big Ditch`.`Amount`) AS `BigDitchTotal`, extract(year from `Big Ditch`.`BeginDate`) AS Expr1
FROM `Big Ditch`
GROUP BY (extract(year from `Big Ditch`.`BeginDate`))
HAVING (extract(year from `Big Ditch`.`BeginDate`) = current_date());
在进行聚合之前按年份过滤行,以减少必须处理的数据量。
MySQL 有一个内置的
YEAR()
函数,您可以使用它来代替 EXTRACT()
。
您不需要
GROUP BY
,因为您只显示一年的结果,这是您在 WHERE
条件中选择的结果。
SELECT Sum(datediff(`Big Ditch`.`EndDate`,`Big Ditch`.`BeginDate`)*`Big Ditch`.`Amount`) AS `BigDitchTotal`, YEAR(`Big Ditch`.`BeginDate`) AS Expr1
FROM `Big Ditch`
WHERE YEAR(`Big Ditch`.`BeginDate`) = YEAR(current_date())