如何按字母顺序和数字顺序对SSRS报告中的列进行排序?

时间:2012-02-08 21:39:59

标签: sql-server sorting reportingservices-2005

我对SSRS一无所知

我有一份SSRS报告,其中包含一个包含文字和数字的列。我希望按照字母顺序对所有文本进行排序,然后将所有数字按数字排序。

现有数据只是字符串。

有没有办法通过简单地编写排序表达式来实现这一点,或者我是否需要提前对数据进行排序并分配排序顺序成员?

示例:

如果我有以下内容:
“猫”
“熊”
“1”
“5.0”
“10”
“-4”
“狗”
“-6”

我想要:

“熊”
“猫”
“狗”
“-6”
“-4”
“1”
“5.0”
“10”

感谢, 马克斯托达德

1 个答案:

答案 0 :(得分:1)

根据我的评论的答案进行修订,但这是一个开始。

DECLARE @foo TABLE(bar VARCHAR(32));

INSERT @foo SELECT 'cat'
  UNION ALL SELECT 'bear'
  UNION ALL SELECT '1'
  UNION ALL SELECT '5'
  UNION ALL SELECT '10'
  UNION ALL SELECT '-4'
  UNION ALL SELECT 'dog'
  UNION ALL SELECT '-6';

SELECT bar FROM @foo
ORDER BY 
    CASE WHEN bar NOT LIKE '%[^0-9.-]%' THEN 2 ELSE 1 END,
    CASE WHEN bar NOT LIKE '%[^0-9.-]%' AND bar <> '.' THEN CONVERT(DECIMAL(12,3), bar) END,
    bar;

结果

bar
----------
bear
cat
dog
-6
-4
1
5
10