【问题标题】:Access Wont Sort Currency by Total Value - SQL - RankAccess 不会按总价值对货币进行排序 - SQL - 排名
【发布时间】:2013-03-29 21:24:43
【问题描述】:

这可能是一个简单的问题,但令人惊讶的是,我还没有找到适合这里的任何东西。我进行了一个查询,其中我将数字格式化为货币。 具体来说:

Format((Sum([CombineTables].[Total Extended Price])),'Currency')

现在,当我尝试对 Access 进行排序时,它会执行以下操作:

$9,994,340.95
$9,200.50
$9.75
$8,000,0000.00
$4,000
$1,000,000,000.00

我想通过 SQL 对这些进行排名,我认为排序是最简单的方法。你知道如何纠正这个问题吗,输出仍然需要采用货币格式。

提前谢谢你

【问题讨论】:

  • 在我看来就像是把它当作一个字符串来处理/排序,你应该为 Sum([CombineTables].[Total Extended Price]) 添加另一个“列”并对其进行排序。在查询设计器中,您可以选中/取消选中一个框以在输出 iirc 中显示它
  • 很好的解决方法,谢谢...我想将您的评论标记为您的信用的答案,并避免不必要的阅读 - 但无法。一会儿再试。谢谢。

标签: sql ms-access format currency ranking


【解决方案1】:

在我看来它正在将其视为/排序为字符串,您应该为 Sum([CombineTables].[Total Extended Price]) 添加另一个“列”并对其进行排序。在查询设计器中,您可以选中/取消选中一个框以在输出 iirc 中显示它

【讨论】:

    【解决方案2】:

    好吧,一种选择是order by原始值:

    order by Sum([CombineTables].[Total Extended Price])
    

    如果由于某种原因您无法做到这一点并且所有内容都具有相同的格式,请使用以下技巧:

    order by len(TotalExtendedPrice), TotalExtendedPrice
    

    (或任何列)。

    你可以用这个技巧处理小数:

    order by len(TotalExtendedPrice) - iif(TotalExtendedPrice like '*.*',  3, 0),
             TotalExtendedPrice
    

    【讨论】:

    • 这是一个很酷的技巧,但我认为这不适用于他的情况,因为从示例日期开始,有时他包含小数,有时不包含小数,因此您的排序将 1,000.00 美元列为大于 9,999 美元跨度>
    猜你喜欢
    • 2013-09-06
    • 2022-07-12
    • 2016-01-07
    • 2013-08-17
    • 2020-10-20
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    相关资源
    最近更新 更多