【问题标题】:MS Access 2007 SQL with WHERE and GROUP BY does not use FILTER properly带有 WHERE 和 GROUP BY 的 MS Access 2007 SQL 不能正确使用 FILTER
【发布时间】:2014-06-24 21:29:55
【问题描述】:

我有一个类似于 SQL 的查询:

SELECT a,b,c
  FROM tableA
 WHERE d = "something"
 GROUP BY a,b,c

查询本身就可以正常工作。

在报表中使用查询时,它工作正常。

如果我尝试应用类似的过滤器

d="something" and e="whatever"

到报表的 OnActivate 事件中报表的记录源,它提示输入“e”的值并且不选择任何内容,即使我在提示“e”时输入“whatever”。

我的理解是“过滤器”只是查询的 WHERE 子句,但在 TOTALs 查询(即包含 GROUP BY 子句)的情况下,它看起来更像是 HAVING 子句。这是怎么回事?有什么办法吗?


为了回答我的第二个问题,我通过在报表的 OnOpen 事件中构建整个 SELECT 语句来解决它,然后使用它来设置 RecordSource。但是,我仍然想了解当 SELECT 语句中有 GROUP BY 子句时过滤器是如何工作的。

【问题讨论】:

  • 你确定条件满足?尝试OR 条件而不是d="something" or e="whatever"
  • 我确定。在 OnActivate 事件中,我使用 debug.print 来显示实际的 RecordSource 和 Filter,当我直接在查询中使用这些值时,它工作正常,即选择记录。

标签: sql group-by ms-access-2007 where-clause


【解决方案1】:

报表的过滤器属性只看到查询的最终结果,而不是它的基表。因此,虽然您可以在查询中的 WHERE 子句中使用列 d(或基表的任何列,就此而言),但它不会投射到 SELECT 语句中,因此您不能引用列 d 或 e报告过滤器。老实说,我不确定您是否可以像这样在这里做您想做的事情,这会影响查询中的预聚合条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-30
    • 2020-10-01
    • 2023-02-21
    • 2013-01-27
    • 2015-05-02
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    相关资源
    最近更新 更多