在SSRS矩阵中对字母数字列进行排序

时间:2020-08-11 04:29:12

标签: sorting reporting-services ssrs-2012

我有一列需要按矩阵排序的列,但是我的问题是该列包含数字和字符的混合,因为它是一个范围字段,并且每个分组父级的范围都不同。 分组的示例如下

Create Table #temp
(
range Varchar(30)
)
Insert into #temp (range)
select '[0-501]' Union      
select '[13001-17001]'   Union  
select  '[17001-999999]'   Union    
select '[8501-13001]'    Union      
select '[501-8501]' 

SELECT  * 
FROM  #temp order by range

drop table #temp


[17001-999999] 
[0-501]     
[13001-17001]       
[8501-13001]        
[501-8501]   

订购后的首选结果如下

[0-501]  
[501-8501]  
[8501-13001]
[13001-17001]   
[17001-999999]

2 个答案:

答案 0 :(得分:1)

最好设计表,使其具有某种“排序顺序”列。 但是您可以使用此:

SELECT *,TRY_CAST(SUBSTRING(range,2,CHARINDEX('-',range)-2) AS INT) as SortOrder
FROM #temp 

然后使用此列对矩阵进行排序。

答案 1 :(得分:1)

在下面的查询中尝试此操作,它将提供所需的输出

SELECT  * 
FROM  #temp 
order by cast(replace(replace(replace(range,'-',''),'[',''),']','') as bigint)
相关问题