Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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,我正在MS ACCESS中编写此声明 SELECT tblTrades.Tick, Sum(tblBbgDivData.BBG_Div_Forecast) AS SumOfBBG_Div_Forecast, tblBbgDivData.Div_Declared_Date FROM tblBbgDivData INNER JOIN tblTrades ON tblBbgDivData.Tick = tblTrades.Tick GROUP BY tblTrades.Tick HAVING (((t

我正在MS ACCESS中编写此声明

SELECT tblTrades.Tick, Sum(tblBbgDivData.BBG_Div_Forecast) AS SumOfBBG_Div_Forecast, tblBbgDivData.Div_Declared_Date
FROM tblBbgDivData INNER JOIN tblTrades ON tblBbgDivData.Tick = tblTrades.Tick
GROUP BY tblTrades.Tick
HAVING (((tblBbgDivData.Div_Declared_Date) Between [tblTrades].[vd_off] And [tblTrades].[vd_on]));
->您试图执行的查询未将指定的表达式“Div_Declared_Date”作为聚合函数包含在内


我试着改变与之间,同样的事情

have用于在聚合后检查聚合列。因此,如果您想知道tblBbgDivData.BBG_Div_Forecast的总和大于500,您可以使用 SumtBlbgDivData.BBG_Div_预测>500

您需要将其移至where子句:

SELECT tblTrades.Tick, Sum(tblBbgDivData.BBG_Div_Forecast) AS SumOfBBG_Div_Forecast, tblBbgDivData.Div_Declared_Date
FROM tblBbgDivData INNER JOIN tblTrades ON tblBbgDivData.Tick = tblTrades.Tick
WHERE (((tblBbgDivData.Div_Declared_Date) Between [tblTrades].[vd_off] And [tblTrades].[vd_on]))
GROUP BY tblTrades.Tick
;
HAVING仅适用于聚集函数,以限制基于应用于每个组的公式的结果。我想你想去哪里:


您的SELECT语句tblBbgDivData.Div声明的日期中还有一个字段不在您的GROUP BY中,因此您需要也按该字段分组或对其应用聚合。您可以看到下面突出显示的问题。从:

如果中没有SQL聚合函数,则忽略摘要值 SELECT语句

GROUP BY字段中的空值是分组的,不会被忽略。 但是,在任何SQL聚合函数中都不会计算空值

使用WHERE子句排除不希望分组的行,并使用 HAVING子句用于在记录分组后对其进行筛选

除非包含备注或OLE对象数据,否则分组方式中的字段 字段列表可以引用“发件人”中列出的任何表中的任何字段 子句,即使该字段未包含在SELECT语句中, 前提是SELECT语句至少包含一个SQL聚合 作用Microsoft Access数据库引擎无法在备忘录或 OLE对象字段

“选择字段”列表中的所有字段必须包含在 GROUP BY子句或作为参数包含在SQL聚合中 功能

因此,您的查询应该是:

SELECT tblTrades.Tick,
  Sum(tblBbgDivData.BBG_Div_Forecast) AS SumOfBBG_Div_Forecast,
  tblBbgDivData.Div_Declared_Date
FROM tblBbgDivData
INNER JOIN tblTrades
  ON tblBbgDivData.Tick = tblTrades.Tick
WHERE (((tblBbgDivData.Div_Declared_Date) BETWEEN [tblTrades].[vd_off] AND [tblTrades].[vd_on]));
GROUP BY tblTrades.Tick,tblBbgDivData.Div_Declared_Date
您已在选择列表中声明了Div_日期,但未在GROUP BY中声明,MS Access将不允许该功能。如果需要在选择列表中包含Div_Declared_Date,则需要对其使用聚合函数,或通过将其添加到组中。
SELECT tblTrades.Tick,
  Sum(tblBbgDivData.BBG_Div_Forecast) AS SumOfBBG_Div_Forecast,
  tblBbgDivData.Div_Declared_Date
FROM tblBbgDivData
INNER JOIN tblTrades
  ON tblBbgDivData.Tick = tblTrades.Tick
WHERE (((tblBbgDivData.Div_Declared_Date) BETWEEN [tblTrades].[vd_off] AND [tblTrades].[vd_on]));
GROUP BY tblTrades.Tick,tblBbgDivData.Div_Declared_Date