【问题标题】:Problem with paramter popup with multi-value field in MS Access SQLMS Access SQL 中带有多值字段的参数弹出问题
【发布时间】:2021-02-26 12:26:07
【问题描述】:

我有以下 SQL 查询:

FROM Registration AS r
WHERE r.RegisteredFor.Value=[Forms]![RunQueries]![filterBy];

当我运行此查询时,它会报告正常,但是,当我运行使用此查询的第二个查询时,例如:

SELECT reg.Gender, Count(reg.Gender) AS CountOfGender, 
    Round(Count(reg.Gender)*100/(SELECT COUNT(ID) FROM FirstQuery),1) AS Percentage
FROM FirstQuery AS reg
GROUP BY reg.Gender;

它总是弹出一个参数框询问“r.RegisteredFor.Value”,或者如果我尝试调整一些东西,它开始抱怨“百分比”部分中的聚合函数。

如果我从 WHERE 中删除 r.RegisteredFor.Value,或者用其他东西替换它,一切正常。我尝试将第一个查询 WHERE 中的“=”替换为“in”,甚至使用 SELECT 来检查 RegisteredFor 链接表上的这些值,但没有什么能阻止参数框弹出。

【问题讨论】:

  • 是否有没有包含完整的第一个查询(即SELECT 部分)的原因?
  • 是的 - 实际的初始查询比我展示的更复杂 - 这样我就不必多次复制和粘贴相同的查询,这样就可以在不更改的情况下对其进行修改它在其他 6 个子查询上。但是,是的 - 好问题,我意识到实现我想要的最简单的方法可能就是每次复制查询而不是单独执行它们,如果初始查询需要更改,只需复制和粘贴。
  • 我现在的意思是为了这个问题。它可能与您的帖子有关。

标签: sql ms-access multivalue


【解决方案1】:

嗯。 . .您可能会考虑使用条件聚合。假设你有两种性别,"M""F"

SELECT SUM(IIF(reg.Gender = "M", 1, 0)) AS m_cnt,
       SUM(IIF(reg.Gender = "F", 1, 0)) AS f_cnt,
       AVG(IIF(reg.Gender = "M", 100.0, 0)) AS m_percent,
       AVG(IIF(reg.Gender = "F", 100.0, 0)) AS f_percent
FROM FirstQuery AS reg;

【讨论】:

  • 感谢这个想法,不幸的是,我们还需要在可能随时间更新的多种可能性(例如种族)的字段上执行此操作。
  • @terrarium 。 . .我的建议是切换数据库。这在任何其他数据库中都会更容易。也就是说,您可能需要使用临时表。
  • 是的,如果是我的选择,我肯定会立即放弃 Access!
猜你喜欢
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多