我创建了一个数据库,我们可以在其中跟踪我们向开发人员提出的错误(表: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 BY
的HAVING
子句。我认为这应该是一个WHERE
(尽管我不能 100% 确定您想要的逻辑)。 SELECT DISTINCT
被SELECT 替换。 。 。分组依据
。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/