2017-03-20 14 views
0

私は親子階層内でストランドに基づいて順序付けする必要がある次の表を持っています...私は親IDに基づいてそれをどのように注文するのか分かりません。次のように親子階層で鎖に基づいて、私はテーブルを注文したい親子階層内で並べ替え

sid parent_id snum strand   Sname 
1  0   3  3.1   civics 
2  0   3  3.2   geography 
3  0   3  3.3   history 
4  1   3  3.1.1  civic and insti 
5  1   3  3.1.2  civic and poli 
6  2   3  3.2.1  geo poli 
7  4   3  3.1.1.1  CIVI 
8  4   3  3.1.1.2  CIVVISSSDS 

..

時間のでに引っかかっ...続行する方法任意のアイデアを
Strand 
3.1 
3.1.1 
3.1.1.1 
3.1.1.2 
3.1.2 
3.2 
3.2.1 
3.3 

あなたは(同じ長さの文字列を釜ためのいくつかの文字を追加すること)により、注文のRPADを使用することができます
+0

へ 変更10は、SQL文 – Jens

+1

は、私はこれは、MySQLで動作する場合は知っているが、SQL Serverでちょうど鎖に注文していない表示します。これはすでに試しましたか? – Kevin

+0

私は挿入文を使って、3つの異なるテーブルのデータを上記の1つ目の新しい第4の宛先テーブルに戻します。 – goonernike

答えて

0

使用この

SELECT * FROM your_table 
ORDER BY RPAD(trim(strand),50,'.0'); 

http://rextester.com/NIK55090

この方法で、あなたは3.1に変化しています3.1.0.0.0.ですので、注文は正しいでしょう。以上ごmax(length(strand))

+0

私の最大(長さ) 45 ..私は50を試しましたが、それは来ていません – goonernike

+0

私は5を与えようとしました....すべてが最初の要素を除いてソートされています... 3.1がリストの最後に表示されています。 3.11 – goonernike

+0

最後に3.2..itsと表示された同じ事例..最初のものの代わりに – goonernike

0

select * from your_table 
    order by rpad(trim(strand), 64, 'Z') 
+0

のサンプルデータだけをテストしました。同じ結果を表示しています。オーダーは発生しません。 – goonernike

+0

長さ>最大文字数の値を使用し、すべてのスペースを切り捨てます。 – scaisEdge

関連する問題