在SSRS 2008中对字符串数值进行排序

詹达克

我在数据集中有一个varchar字段(我正在分组),该数据集返回值列表:20、25、40、100、110,“ N / A”。

我想将“数值”值从低到高排序:即:20、25 ... 110,“ N / A”

问题是分组中的A> Z排序给出了以下输出:

100、110、25,...,不适用

由于存在字符串值,因此我无法转换为数字数据类型。

请问有人有解决方案吗?

预先谢谢你果酱

克里斯托弗·布朗

您可以在此处实现几种解决方案。我将讨论我认为最简单的两个。如果这些都不适合您,请告诉我,因为有很多选择。为简单起见,我将您在问题中引用的字段命名为* num_text *。

在SSRS中修复:转到显示相关数据的Tablix的Tablix属性。转到排序选项卡。单击添加。在“排序依据”字段中,单击表达式按钮,然后键入以下内容:

=CInt(IIF(Fields!num_text.value = "N/A",9999999,Fields!num_text.value))

注意,您需要将任何可能的文本值转换为大于任何可能的整数/小数的数字。在这种情况下,我根据您问题中的示例选择了9999999。如果您有多个未转换为数字的文本值,“报表生成器/ BIDS”将允许您保存报表,但是在呈现报表时,它将显示#Error,表示CInt(或您选择的任何其他转换公式)非数字值失败。

修复SQL:添加一个新的字段(例如field_sort),其数据类型为数字,并使用case语句生成有问题的当前字段,说明:

, Case
    When --Criteria leading to "N/A"
        Then 9999999
        Else num_text
    End as field_sort

--Rest of SQL Script here

Order by field_sort

然后只需在SSRS中显示您的num_text字段,值将正确排序。如果您有许多可能的字符串值,则可能会发现更容易在SQL中进行修复(而不是在SSRS中指定许多IIF语句)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章