Jam*_*akh 4 reporting-services ssrs-2008
我在一个返回值列表的数据集中有一个varchar字段(我正在分组):20,25,40,100,110,'N/A'..
我希望"数字"值从低到高排序:即:20,25 ... 110,'N/A'
问题是分组中的A> Z排序给出以下输出:
100,110,25,...,N/A.
我无法转换为numeric数据类型,因为有字符串值..
有人有解决方案吗?
提前谢谢Jam
您可以在此处实施多种解决方案.我将讨论我认为最简单的两个.如果这些对你不起作用,请告诉我,因为有很多选择.为了方便起见,我将您在问题中引用的字段命名为*num_text*.
修复SSRS: 转到显示相关数据的Tablix的Tablix属性.转到"排序"选项卡.单击添加.在"排序依据"字段中,单击表达式按钮并键入以下内容:
=CInt(IIF(Fields!num_text.value = "N/A",9999999,Fields!num_text.value))
Run Code Online (Sandbox Code Playgroud)
注意,您需要将任何可能的文本值转换为大于任何可能的整数/小数的数字.在这种情况下,我根据您问题中的示例选择了9999999.如果您有多个未转换为数字的文本值,则报表生成器/ BIDS将允许您保存报表,但在呈现时,它将显示#Error,表示CInt(或您选择的任何其他转换公式)在非数字值上失败.
修复SQL: 添加数据类型为numeric的新字段(如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
Run Code Online (Sandbox Code Playgroud)
然后只需在SSRS中显示num_text字段,这些值就会被正确排序.如果您有许多可能的字符串值,那么您可能会发现在SQL中更容易修复(而不是在SSRS中指定大量的IIF语句).
归档时间: |
|
查看次数: |
8967 次 |
最近记录: |