having 子句中的未知列 - mysql

问题描述 投票:0回答:1

我知道这个问题已经得到解答,但由于我缺乏 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());
sql mysql database having
1个回答
0
投票

在进行聚合之前按年份过滤行,以减少必须处理的数据量。

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())
© www.soinside.com 2019 - 2024. All rights reserved.