Access 列表框中未显示百分比列

Percentage column not displaying in Access Listbox

我在一份报告中有一个列表框,它有效地总结了另一个 table,按简短的原因列表分组。我有一个列是原因,还有一个列是每个原因出现的次数。我想要一个列说明这些原因所占的百分比,但此列未显示 - 而且它给出了前一列(按原因计数)错误的数字。

在编辑之前,我的代码(运行良好)是;

SELECT Reasons.Reason, Count([Master Data].ID) AS [Count]
FROM Reasons INNER JOIN [Master Data] ON Reasons.ID = [Master Data].[Lateness Reason]
GROUP BY Reasons.Reason;

我将其编辑为;

SELECT Reasons.Reason, Count([Master Data].ID) AS [Count], Format(Count([Master Data].ID)/Count(AllData.ID),'\P') AS Percentage
FROM [Master Data] AS AllData, Reasons INNER JOIN [Master Data] ON Reasons.ID = [Master Data].[Lateness Reason]
GROUP BY Reasons.Reason;

但如前所述,第三列未显示,Count 列中的数字现在也是错误的。

谁能解释这是为什么以及我应该如何解决它?

编辑: 我发现 'Count' 列中显示的错误数字实际上是正确数字乘以 Count(AllData.ID) 虽然我可以'不明白为什么会这样。

Correct/desired    |    Actual Output
value for "Count"  |      Value
___________________|___________________
10                   75500 
4                    30200
1                    7550
20                   151000
3                    22650
7                    52850

尝试使用格式的正确语法:

Format(Count([Master Data].ID)/Count(AllData.ID),'Percent') AS Percentage

并且您可能必须使用子查询来获取 table 中连接记录数最少的非重复计数([主数据]?)。

编辑:

如果你的第一个解决方案看起来很慢,试试这个:


SELECT 
    ID,
    Reason,
    T.ReasonCount / (SELECT Count(*) FROM [Master Data])
FROM 
    Reasons
INNER JOIN
    (SELECT [Lateness Reason], Count(*) AS [ReasonCount]
    FROM [Master Data]
    GROUP BY [Lateness Reason]) AS T
    ON
    T.[Lateness Reason] = Reasons.ID
GROUP BY 
    ID,
    Reason,
    T.ReasonCount