sql - Microsoft Access 中的 SELECT DISTINCT count()

标签 sql ms-access

我创建了一个数据库,我们可以在其中跟踪我们向开发人员提出的错误(表:ApplixCalls)并跟踪与记录的错误相关的任何通信(表:通信)。

我正在尝试创建一个计数,以便我们可以看到没有与我们通信或仅与我们通信的错误数量。这应该让我们能够清楚地看到我们应该在哪里追赶开发人员进行更新等。

到目前为止我有这个 SQL:

SELECT DISTINCT Count(ApplixCalls.OurRef) AS CountOfOurRef
    FROM ApplixCalls LEFT JOIN Correspondence ON ApplixCalls.OurRef = Correspondence.OurRef
    HAVING (((Correspondence.OurRef) Is Null) 
        AND ((ApplixCalls.Position)<>'Closed')) 
    OR ((ApplixCalls.Position)<>'Closed') 
        AND ((Correspondence.[SBSUpdate?])=True);

我发现这部分正在计算我们发送更新的每次情况,当我需要它计数 1 时,其中 OurRef 是唯一的,并且它只包含来 self 们的更新:

  OR ((ApplixCalls.Position)<>'Closed') 
        AND ((Correspondence.[SBSUpdate?])=True);

希望这是有道理的......

有办法解决这个问题吗?

最佳答案

MS Access 不支持count(distinct)。在您的情况下,您可以使用子查询。此外,您的查询不应该起作用。也许这就是您的意图:

SELECT COUNT(*)
FROM (SELECT ApplixCalls.OurRef
      FROM ApplixCalls LEFT JOIN
           Correspondence
           ON ApplixCalls.OurRef = Correspondence.OurRef
      WHERE (((orrespondence.OurRef Is Null) AND (ApplixCalls.Position) <> 'Closed')) OR
              (ApplixCalls.Position <> 'Closed') AND (Correspondence.[SBSUpdate?] = True))
            )
      GROUP BY ApplixCalls.OurRef
    ) as x;

修改:

  • 您有一个没有 GROUP BYHAVING 子句。我认为这应该是一个 WHERE (尽管我不能 100% 确定您想要的逻辑)。
  • SELECT DISTINCTSELECT 替换。 。 。分组依据
  • COUNT(DISTINCT) 现在是带有子查询的 COUNT(*)

编辑:

根据您评论中的描述:

SELECT COUNT(*)
FROM (SELECT ApplixCalls.OurRef
      FROM ApplixCalls LEFT JOIN
           Correspondence
           ON ApplixCalls.OurRef = Correspondence.OurRef
      WHERE (((orrespondence.OurRef Is Null) AND (ApplixCalls.Position) <> 'Closed')) OR
              (ApplixCalls.Position <> 'Closed') AND (Correspondence.[SBSUpdate?] = True))
            )
      GROUP BY ApplixCalls.OurRef
      HAVING SUM(IIF(Correspondence.[SBSUpdate?] = False, 1, 0)) = 0
    ) as x;

关于sql - Microsoft Access 中的 SELECT DISTINCT count(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37908443/

相关文章:

MySQL统计喜欢和不喜欢的数据

sql - 按选择第一次出现的字段分组我怎样才能得到最后一个?

sql - MySQL "between"子句不包含?

sql - 如何重设Access表的“自动编号”字段? (不是从1开始)

ms-access - Access VBA : Editing a RecordSet in a continuous subform

sql - 如何连接两个表但只返回不匹配的行?

ms-access - MSAccess 2010 + VBA : Value is not a default property of recordset Field object

sql - 多表 Access 查询

Mysql:连接重复数据但忽略重复项中的字符串

c# - 多个用户使用的 Winform 应用程序登录