在 SSRS 中的矩阵中排序字母数字列

Ordering an alphanumeric column in a matrix in SSRS

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

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]

最好将 table 设计成具有某种“排序顺序”列。 但是你可以使用这个:

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

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

试试下面的查询,它会给出所需的输出

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