Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 表达式中不能有聚合函数_Sql_Ms Access - Fatal编程技术网

Sql 表达式中不能有聚合函数

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

您好,我正在尝试做下面的qry,我不断得到无法在子qry和线上的表达式错误中具有聚合函数。有什么办法可以让这一切顺利吗

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