【问题标题】:Percentage column not displaying in Access Listbox百分比列未显示在访问列表框中
【发布时间】:2021-01-30 02:37:00
【问题描述】:

我在一份报告中有一个列表框,它有效地总结了另一个表格,按简短的原因列表分组。我有一列是原因,一列是每个原因发生的次数。我想有一列这些原因构成的百分比,但该列没有显示 - 而且它给上一列(按原因计数)错误的数字。

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

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(AllData.ID),尽管我不明白为什么会发生这种情况。

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

【问题讨论】:

    标签: sql ms-access number-formatting


    【解决方案1】:

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

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

    而且您可能必须使用子查询来获取连接记录数最少的表的不同计数([主数据]?)。

    编辑:

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

    
    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
    

    【讨论】:

    • 谢谢你的回答,但我不明白子查询?它需要应用于哪个表,为什么?可以举个例子吗?
    • 如果该信息有用,请查看我刚刚对我的问题所做的编辑。
    • FROM [Master Data] AS AllData, Reasons 创建一个 笛卡尔连接,它将两个表的计数相乘。
    • 谢谢@Gustav。那么我可以在不加入的情况下做到这一点,只需计算AllData 表的数量吗?等等,我假设这是上面提到的子查询?
    • 是的,已经解决了!!非常感谢你们俩:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    相关资源
    最近更新 更多