Sql 表达式中不能有聚合函数
您好,我正在尝试做下面的qry,我不断得到无法在子qry和线上的表达式错误中具有聚合函数。有什么办法可以让这一切顺利吗Sql 表达式中不能有聚合函数,sql,ms-access,Sql,Ms Access,您好,我正在尝试做下面的qry,我不断得到无法在子qry和线上的表达式错误中具有聚合函数。有什么办法可以让这一切顺利吗 SELECT ID, DateColumn, Contamination, BrokenGlass, OtherReasons, SUM(Contamination) + SUM(BrokenGlass) + SUM(OtherReasons) AS Total, SUM(Contamination) / Total
SELECT ID,
DateColumn,
Contamination,
BrokenGlass,
OtherReasons,
SUM(Contamination) + SUM(BrokenGlass) + SUM(OtherReasons) AS Total,
SUM(Contamination) / Total AS Expr1,
(SELECT SUM(Contamination)/ SUM(SUM(Contamination) + SUM(BrokenGlass) + SUM(OtherReasons))
FROM tbltest T2
WHERE T2.ID <= T2.ID) AS RunningSum
FROM tbltest
GROUP BY ID, DateColumn, Contamination, BrokenGlass, OtherReasons
我猜您正在使用基于Expr1的MS Access,请尝试以下操作。替换查询中的别名总使用量,并且不能求和:
我猜您正在使用基于Expr1的MS Access,请尝试以下操作。替换查询中的别名总使用量,并且不能求和: 将sumsum更改为仅对结果和使用加法运算符:
--SUM(SUM(Contamination) + SUM(BrokenGlass) + SUM(OtherReasons))
(SUM(Contamination) + SUM(BrokenGlass) + SUM(OtherReasons))
此外,不要尝试在同一select子句中引用别名。可以使用子查询/派生表,也可以对“总计”重复所需的计算
--SUM(Contamination) / Total AS Expr1
SUM(Contamination) / (SUM(Contamination) + SUM(BrokenGlass) + SUM(OtherReasons))
将sumsum更改为仅对结果和使用加法运算符:
--SUM(SUM(Contamination) + SUM(BrokenGlass) + SUM(OtherReasons))
(SUM(Contamination) + SUM(BrokenGlass) + SUM(OtherReasons))
此外,不要尝试在同一select子句中引用别名。可以使用子查询/派生表,也可以对“总计”重复所需的计算
--SUM(Contamination) / Total AS Expr1
SUM(Contamination) / (SUM(Contamination) + SUM(BrokenGlass) + SUM(OtherReasons))
编辑
结果不正确是一个完全不同于最初要求的问题,我将不得不在黑暗中尝试一下,因为我对你的项目一无所知,但现在你开始吧,也许它可以让你朝着正确的方向开始
SELECT ID,
DateColumn,
Contamination,
BrokenGlass,
OtherReasons,
SUM(Contamination) + SUM(BrokenGlass) + SUM(OtherReasons) AS Total,
SUM(Contamination) / Total AS Expr1,
(
SELECT SUM(Contamination)/ (SUM(Contamination) + SUM(BrokenGlass) + SUM(OtherReasons))
FROM tbltest T2
WHERE T2.ID <= tbltest.ID
) AS RunningSum
FROM tbltest
GROUP BY ID, DateColumn, Contamination, BrokenGlass, OtherReasons
编辑
结果不正确是一个完全不同于最初要求的问题,我将不得不在黑暗中尝试一下,因为我对你的项目一无所知,但现在你开始吧,也许它可以让你朝着正确的方向开始
SELECT ID,
DateColumn,
Contamination,
BrokenGlass,
OtherReasons,
SUM(Contamination) + SUM(BrokenGlass) + SUM(OtherReasons) AS Total,
SUM(Contamination) / Total AS Expr1,
(
SELECT SUM(Contamination)/ (SUM(Contamination) + SUM(BrokenGlass) + SUM(OtherReasons))
FROM tbltest T2
WHERE T2.ID <= tbltest.ID
) AS RunningSum
FROM tbltest
GROUP BY ID, DateColumn, Contamination, BrokenGlass, OtherReasons
你不能这样做求和。注意这个条件:T2.ID在哪里?你想做什么?你已经有了SUM+SUM…,那么为什么是外部的SUM?其中T2.ID我需要以某种方式将污染的运行总和和总污染的运行总和分开。因此,如果第1行=7,第2行=1,总计第1行=10,第2行=1,它将除以8/11,你不能这样求和。注意这个条件:WHERE T2.ID,你想做什么?你已经有了SUM+SUM…,那么为什么是外部的SUM?其中T2.ID我需要以某种方式将污染的运行总和和总污染的运行总和分开。所以,如果污染第1行=7,第2行=1,总第1行=10,第2行=1,它将除以8/11,仍然得不到正确的结果?每行值都是。588235@user1342164你能用一些样本数据和你需要的结果来编辑你的原始帖子吗?我需要以某种方式划分污染的运行总和和总污染的运行总和。因此,如果第1行=7,第2行=1,第1行=10,第2行=1,那么它将除以8/11@user1342164在这种情况下,一些示例数据将非常有用。我已经在一个表中创建了部分样本数据,但我不能确切地告诉您最终产品想要什么。仍然没有得到正确的结果吗?每行值都是。588235@user1342164你能用一些样本数据和你需要的结果来编辑你的原始帖子吗?我需要以某种方式划分污染的运行总和和总污染的运行总和。因此,如果第1行=7,第2行=1,第1行=10,第2行=1,那么它将除以8/11@user1342164在这种情况下,一些示例数据将非常有用。我已经在一个表中创建了部分样本数据,但我不能确切地告诉您最终产品想要什么。这给了我错误的结果,每行的运行总数为0.588235column@user1342164-根据我对你的问题的评论。。。其中T2.ID给出了错误的结果,每行的运行总数为0.588235column@user1342164-根据我对你的问题的评论。。。其中T2.ID为错误结果在运行总计列中每行为0.588235复制其中T2.ID为错误结果在运行总计列中每行为0.588235复制其中T2.ID