2012-02-08 74 views
0

我对SSRS一无所知如何按字母和数字排序SSRS报告中的列?

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

,因为它代表的数据都是只是字符串。

有没有办法通过写一个排序表达式要做到这一点,或者我需要做的排序上的数据的时间提前不知何故并分配排序顺序成员?

例如:

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

我想:

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

感谢, 马克·斯托达德

+0

你能表现出一定的样本数据和预期的效果?你的数字是整数还是小数等?您还需要定义如何对“种类”数字进行排序,例如'.'或'$'。 – 2012-02-08 21:55:29

+0

为什么5变为5.0? – 2012-02-08 22:17:58

+0

这是一个错字 – MStodd 2012-02-09 16:03:38

回答

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 
+0

到目前为止答案不错,负数? – MStodd 2012-02-08 22:09:11

+0

谢谢@MStodd我已经将 - 符号添加到模式匹配中,当然这会增加将文本解释为数字的值的可能性。另外像'.'这样的特定值会导致转换错误。希望您可以更清楚地陈述需求,以帮助确定此解决方案是否需要更强大。 – 2012-02-08 22:13:09

+0

会做。如果可以在SQL中执行此操作或者需要在SSRS中执行此操作,那么明天我会明白。 – MStodd 2012-02-08 22:16:00