Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting SSRS[字母数字排序]:如何将报表中的特定列排序为[a-Z]&;[ASC]_Sorting_Reporting Services - Fatal编程技术网

Sorting SSRS[字母数字排序]:如何将报表中的特定列排序为[a-Z]&;[ASC]

Sorting SSRS[字母数字排序]:如何将报表中的特定列排序为[a-Z]&;[ASC],sorting,reporting-services,Sorting,Reporting Services,我有一个包含票据编号的字段集,我想先按字母顺序排序,然后按数字排序 例如,我有一个“Bills”列,它有下面的Bills序列 - HB200 - SB60 - HB67 预期结果如下 - HB67 - HB200 - SB60 如何在SSRS组属性中使用排序,使字段从[A-Z]&[1-1000….]进行排序这应该可以通过在组属性中添加两个单独的排序选项来实现。为了测试这一点,我使用您的示例创建了一个简单的数据集 CREATE TABLE #temp (Bills VARCHAR(20))

我有一个包含票据编号的字段集,我想先按字母顺序排序,然后按数字排序

例如,我有一个“Bills”列,它有下面的Bills序列

- HB200
- SB60
- HB67
预期结果如下

- HB67
- HB200
- SB60

如何在SSRS组属性中使用排序,使字段从[A-Z]&[1-1000….]

进行排序这应该可以通过在组属性中添加两个单独的
排序
选项来实现。为了测试这一点,我使用您的示例创建了一个简单的数据集

CREATE TABLE #temp (Bills VARCHAR(20))

INSERT INTO #temp(Bills)
VALUES ('HB200'),('SB60'),('HB67')

SELECT * FROM #temp
接下来,我为我的
Bills
字段添加了一个包含单行和单列的矩阵,该字段包含一个行组

在组属性中,我的排序选项设置如下:

因此,为了使这项工作正常进行,我的理论是,您需要将数字字符与非数字字符分开,并在各自的排序选项中使用它们。为此,我在SSRS中使用了相对未知的
Regex Replace
函数

此表达式仅获取非数字字符,并在顶部排序选项中使用:

=System.Text.RegularExpressions.Regex.Replace(Fields!Bills.Value, "[0-9]", "")
当此表达式隔离数字字符时:

=System.Text.RegularExpressions.Regex.Replace(Fields!Bills.Value, "[^0-9]", "")
通过这些排序选项,我的结果与您预期的结果相符


在显示数据集的tablix/表格的排序表达式中,将排序设置为类似以下内容:

然后对A-Z进行排序时,它将按照排序表达式中给定的数字进行排序


只有在没有数百个值的情况下,这才是一个解决方案,因为如果有数百个可能的条件,那么创建这些值可能会变得非常繁琐。

这些值是否总是以相同的顺序出现?i、 两个字母,然后是数字?
=IIF(Fields!Bills.Value = "HB67", 1,  IIF(Fields!Bills.Value = "HB200", 2,  IIF(Fields!Bills.Value = "SB600", 3, 4)))