[SQL ] 資料排序問題

作者: joedenkidd (優質的藍色射手)   2016-02-14 18:19:46
Hi All
我遇到一個排序問題,請問題是否能在 seach的時候解掉
資料如下
欄位資料
群組 資料
A A-1
A A-2
A A-11
B B-3
B B-2
B B-5
C C-1-1
C C-1-3
C C-1-11
C C-2-11
期望輸出結果
A A-1
A A-2
A A-11
B B-2
B B-3
B B-5
C C-1-1
C C-1-3
C C-1-11
C C-2-11
目前做法如下
select *,LPAD(LTRIM(split_part(資料,'-',2)),3,'0') as ss from table order by 群組 asc,ss asc,資料 asc
但是這樣子只能解 A B問題
C的排序會變成
C-1-1
C-1-11
C-1-3
C-2
不知道怎修改才能達到我想要的結果,請高手指點一下,感謝
作者: chippclass (善假狼賺錢中)   2016-02-15 17:21:00
你那個方法原因出在只能針對一個減號來用的 (應該吧?C群組有兩個減號的話 可以重複把排序多弄一次就可以解http://sqlfiddle.com/#!15/931f9/8 比如說這樣?但是這樣單純的硬解,會有相同的缺點,當減號有3個以上時就不能用了
作者: joedenkidd (優質的藍色射手)   2016-02-15 21:58:00
了解,我也是想到硬解 再拆一組出來比
作者: jej (晃奶大馬桶)   2016-02-17 19:07:00
資料向右補齊10格, 使用'.'補齊 排序 搞定
作者: joedenkidd (優質的藍色射手)   2016-02-17 20:30:00
jej大,能舉例嗎?
作者: rockchangnew (rock)   2016-02-17 23:35:00
作者: joedenkidd (優質的藍色射手)   2016-02-18 11:05:00
r大,看不到也
作者: rockchangnew (rock)   2016-02-18 11:49:00
https://goo.gl/photos/g2fzanWgxB4zmfAG9我的做法還是有BUG啦我想到另一個做法就是A-1轉A-01然後在排序

Links booklink

Contact Us: admin [ a t ] ucptt.com