我在数据集中有一个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] 删除。
我来说两句