类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
各位老鳥,
我想得到的排序比較特殊, 為:
先按 類別排序 --> 再按 工段排序 ; 工段為 B20,B40 的,要放在同一類別的最上面,其他工段按從小到大排序.
即:
類別 工段 款號 顏色
------ ----- ------- ------
100000 B40 G0001 WH
100000 A00 G0002 WH
100000 A21 G0001 WH
100000 A22 G0003 WH
100000 A23 G0001 WH
100000 A24 G0001 WH
100000 B10 G0001 WH
100000 B13 G0001 WH
100001 B20 G0002 WH
100001 B40 G0002 WH
100001 A01 G0003 IV
100001 A22 G0002 WH
100001 A33 G0004 WH
100001 A34 G0002 IV
100001 A68 G0006 WH
100001 B12 G0006 IV
100001 B15 G0002 WH
100002 A01 G0003 IV
100002 A22 G0002 WH
100002 A33 G0004 WH
100002 A34 G0002 IV
100002 A68 G0006 WH
100002 B12 G0006 IV
100002 B15 G0002 WH
所以我的做法是: 先把B20,B40 轉成 001,002,待排序完成後再轉回成B20,B40 .
但是 .........
Select 類別,case 工段 when B20 then 001 when B40 then 002 else 工段 end [工段],款號,顏色 into Table2
From Table1 Where 類別 between 1000 and 2000 Order By 類別,工段
update Table2 set 工段=B20 where 工段=001
update Table2 set 工段=B40 where 工段=002
select * from Table2
drop table Table2
||
|| 得到下面的排序, 我無法理解 !! , 為什麼加入
|| "select .... into Table2 " 類別會被打亂 ??
\/
類別 工段 款號 顏色
------ ----- ------- ------
100000 B40 G0001 WH
100000 A00 G0002 WH
100000 A21 G0001 WH
100000 A22 G0003 WH
100000 A23 G0001 WH
100001 B20 G0002 WH
100001 B40 G0002 WH
100001 A01 G0003 IV
100001 A22 G0002 WH
100001 A33 G0004 WH
100001 A34 G0002 IV
100001 A68 G0006 WH
100001 B12 G0006 IV
100001 B15 G0002 WH
100002 A01 G0003 IV
100002 A22 G0002 WH
100002 A33 G0004 WH
100000 A24 G0001 WH
100000 B10 G0001 WH
100000 B13 G0001 WH
100002 A34 G0002 IV
100002 A68 G0006 WH
100002 B12 G0006 IV
100002 B15 G0002 WH
Select 類別,case 工段 when B20 then 001 when B40 then 002 else 工段 end [工段],款號,顏色
From Table1 Where 類別 between 1000 and 2000 Order By 類別,工段
select * from Table2
drop table Table2
||
|| 下面的排序 , 沒加 "select .... into Table2 " 結果又是正常的 !
||
\/
類別 工段 款號 顏色
------ ----- ------- ------
100000 002 G0001 WH
100000 A00 G0002 WH
100000 A21 G0001 WH
100000 A22 G0003 WH
100000 A23 G0001 WH
100000 A24 G0001 WH
100000 B10 G0001 WH
100000 B13 G0001 WH
100001 001 G0002 WH
100001 002 G0002 WH
100001 A01 G0003 IV
100001 A22 G0002 WH
100001 A33 G0004 WH
100001 A34 G0002 IV
100001 A68 G0006 WH
100001 B12 G0006 IV
100001 B15 G0002 WH
100002 A01 G0003 IV
100002 A22 G0002 WH
100002 A33 G0004 WH
100002 A34 G0002 IV
100002 A68 G0006 WH
100002 B12 G0006 IV
100002 B15 G0002 WH
网友回答:
select * from 表
order by 類別,case when 工段 in(B20,B40) then 0 else 1 end,工段