2017-01-23 5 views
0

私はテーブル内の場所のリストを持っています。最初の位置は「2」で始まり「8」で終了し、2番目の位置は文字「A」で始まり「P」で終わります。最後に、すべての場所は、この例のように7つの要素があります。値のグループ順に並べる

SELECT Location FROM WAREHOUSE_LOCATIONS 

Location | 
---------| 
2A-1  | 
2A-2  | 
2A-3  | 
2A-4  | 
2A-5  | 
2A-6  | 
2A-7  | 
2B-1  | 
2B-2  | 
2B-3  | 
2B-4  | 
2B-5  | 
2B-6  | 
2B-7  | 
2C-1  | 
... 
3A-1  | 
... 
4A-1  | 
... 
etc... 

私はこのようなこの場所を注文したい:

Location | 
---------| 
2A-1  | 
2B-1  | 
2C-1  | 
2D-1  | 
.... 
2P-1  | 
2A-2  | 
2B-2  | 
2C-2  | 
... 
2P-2  | 
2A-3  | 
2B-3  | 
2C-3  | 

はどのように私はそれを行うことができますか?

+0

私はあなたが基本的に1つの値に3つのデータ点を詰めているこれを正しく読んでいた場合。あなたが直面している問題は、これが1NFに違反するためです。それは本当に3列の情報でなければなりません。また、必要に応じて、そのタイプのフォーマットには計算カラムを使用できます。 –

+0

ありがとう、私はあなたがrigthだと思う。私はそれが可能であると信じていましたが、私は別の方法でこれをしなければなりません。 – Jprada

答えて

3

あなたは行うことができます:

ORDER BY CAST(RIGHT(Location, LEN(Location) - CHARINDEX('-', Location)) AS INT), 
LEFT(Location, CHARINDEX('-', Location) - 1) 
+2

ハイフンの後に 'INT'に' CAST'を投げます。それ以外の場合は '' 10''が '' 2 ''の前にソートされます。 –

+0

良いアイデア。ありがとう。 –

+0

私はドアを使い果たしていたので、文章を書きましたので少し微調整する必要があります。私は今どこかで私はそれに取り組むことができません。実際のエラーテキストを貼り付けることはできますか? –

関連する問題