2012-02-08 57 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