【问题标题】:SSRS - Sort by number part of stringSSRS - 按字符串的数字部分排序
【发布时间】:2018-12-19 17:13:53
【问题描述】:

我有一个将在 Dynamics 365 中使用的 SSRS 报表,因此我无法在数据集中使用 SQL 来提供帮助。

我有一个产品/版本代码列,它是混合字母和数字的字符串。例如:

FF8, FF9, FF10, 游离脂肪酸

这些将进入列标题并形成一个列组,该列组也按代码排序。标准的字母排序是这样的:

FF10 - FF8 - FF9 - FFA

我很高兴在我的排序表达式中使用子字符串来删除前面的产品代码,但我想要升序数字格式的数字,后跟按字母顺序排列的文本版本:

FF8 - FF9 - FF10 - FFA

【问题讨论】:

    标签: sorting reporting-services dynamics-crm


    【解决方案1】:

    我会在您的数据集中添加一个计算列,去除非数字字符并转换为数字。这将使排序更容易

    这样的公式可能会有所帮助

    =System.Text.RegularExpressions.Regex.Replace(Fields!productcode.Value, "[^0-9]", "")
    

    ^ 符号表示“不是”,因此此 Regex 表达式将删除所有不在 0 到 9 范围内的字符(即所有非数字字符)

    根据this,CRM 的沙盒报告应该支持Regex.Replace

    【讨论】:

    • 谢谢,我通过将非数字字符替换为 0 而不是空白然后转换为 int(空白给出错误)对此进行了扩展。然后我将 0 更改为 999 以将字母代码推到后面。在我的列组中,我按第二个计算字段排序,然后按原始产品代码排序
    【解决方案2】:

    您也可以在排序中使用如下表达式

    =switch(Fields!name.Value="FF10",3,Fields!name.Value="FF9",2,Fields!name.Value="FF8",1,Fields!name.Value="FFA ",4)

    佐伊

    【讨论】:

    • 感谢您的想法和一个要记住的想法,尽管如果添加新产品会受到限制。正则表达式解决方案应该处理这个
    猜你喜欢
    • 2012-09-14
    • 1970-01-01
    • 2017-11-20
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多