【问题标题】:Datatype mismatch error in access using group by使用 group by 访问时出现数据类型不匹配错误
【发布时间】:2013-10-21 21:22:55
【问题描述】:

我有一个数据库,其表如下所示:

[ID]、[提交日期]、[打开/关闭]、[研究者姓名]

我想要一个查询,它可以为我提供每个调查员的未结案件和已结案的数量。我试图使用这个查询:

选择 [研究者姓名],计数 (*) 作为总计
FROM [主表]
WHERE [归档日期] 在“start_date”和“end_date”之间且 [Open/Closed]=-1
GROUP BY [调查员姓名];

但我收到一条错误消息:“标准中的数据类型不匹配”。我在想这是因为“调查员姓名”列中的空值,我尝试使用 Nz,但随后查询不认为列名在按表达式分组中。我试过在这里玩,但没有任何效果。

PS:我只写了开放值的查询,如果有办法同时获取开放值和封闭值,那就太棒了。

【问题讨论】:

  • start_dateend_date 值来自哪里?现在它们只是字符串文字(即实际字符串 "start_date""end_date",而不是日期值),这就是您收到错误的原因。
  • 当我尝试运行查询时,它不应该要求我输入值吗?

标签: ms-access ms-access-2013


【解决方案1】:

如果您希望这是一个参数查询(并被提示输入 start_dateend_date 值),那么参数也需要用方括号括起来。这是 Access 中的查询生成器放在一起的 SQL 代码:

PARAMETERS start_date DateTime, end_date DateTime;
SELECT [main table].[Investigator Name], Count([main table].ID) AS Total
FROM [main table]
WHERE ((([main table].[Date Filed]) Between [start_date] And [end_date]) AND (([main table].[Open/Closed])=True))
GROUP BY [main table].[Investigator Name];

【讨论】:

  • 谢谢!我认为这是我的问题。
【解决方案2】:

如果你想被问到 [end_date] 和 [start_date] 你应该写

PARAMETERS [end_date] DateTime, [start_date] DateTime;
SELECT [Investigator Name], Count(*) AS Total
FROM [main table]
WHERE [Date Filed] Between [start_date] And [end_date] and [Open/Closed]=-1
GROUP BY [Investigator Name]; 

【讨论】:

    猜你喜欢
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    相关资源
    最近更新 更多