我在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”作为聚合函数的查询
我试图更改<>与之间,同样的事情!
答案 0 :(得分:2)
您可以在下面突出显示您的问题。来自documentation:
如果没有SQL聚合函数,则省略摘要值 SELECT语句。
GROUP BY字段中的空值被分组,不会被省略。 但是,在任何SQL聚合函数中都不会计算Null值。
使用WHERE子句排除不希望分组的行并使用 HAVING子句用于在记录分组后对其进行过滤。
除非它包含备注或OLE对象数据,否则GROUP BY中的字段 字段列表可以引用FROM中列出的任何表中的任何字段 子句,即使该字段未包含在SELECT语句中, 如果SELECT语句包含至少一个SQL聚合 功能。 Microsoft Access数据库引擎无法在Memo或组上进行分组 OLE对象字段。
SELECT字段列表中的所有字段都必须包含在 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
答案 1 :(得分:-2)
用于检查聚合列(聚合后)。所以如果你想知道tblBbgDivData.BBG_Div_Forecast的总和大于500,你会使用
HAVING SUM(tblBbgDivData.BBG_Div_Forecast) > 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
;
答案 2 :(得分:-2)
HAVING
仅适用于aggrecate函数,以根据应用于每个组的公式限制结果。我想你想要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
您的SELECT
声明(tblBbgDivData.Div_Declared_Date
)中还有一个不在oyur GROUP BY
中的字段,因此您也需要按该字段进行分组或应用aggergation它呢