2012-02-08 3 views
0

私はSSRSについて何も知りませんSSRSレポートの列をアルファベット順および数値順にソートするにはどうすればよいですか?

テキストと数字を含む列のSSRSレポートがあります。すべてのテキストをアルファベット順にソートして列をソートし、すべての数値を数値順にソートします。

データはすべて単なる文字列です。

並べ替え式を記述するだけでこれを行う方法はありますか、あらかじめデータの並べ替えを何らかの形で行い、並べ替え順序のメンバーを割り当てる必要がありますか?

例:

私は、次のしている場合:
"猫"

を "負担" "1"
"5.0"
"10"
"-4"
を」犬 "
" -6 "

私は望むでしょう:


"猫" を "負担"
"イヌ"
"-6"
"-4"
"1"
"5.0"
"10"

おかげで、 マークストッダード

+0

あなたはいくつかのサンプルデータと望ましい結果を表示することができますか?あなたの数字は整数か小数ですか?また、 '.'や' $ 'のような「種類」の数字をソートする方法を定義する必要があります。 –

+0

5が5.0に変更されるのはなぜですか? –

+0

これはタイプミスでした – MStodd

答えて

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

+0

ありがとう@MStodd私はパターンマッチに - 記号を追加しましたが、もちろん、これは数値として解釈されるテキストを意味する値の可能性を高めます。また、 '.'のような特定の値は単独で変換エラーを引き起こします。このソリューションがより堅牢である必要があるかどうかを判断するために、要件をより明確に記述できることを望みます。 –

+0

となります。明日、SQLでこれを行うことが受け入れられるか、SSRSで行う必要があるかどうかを調べる予定です。 – MStodd

関連する問題