按列和标准的多个订单

时间:2016-09-21 10:18:58

标签: sql sql-order-by

我按列排序有问题。首先,我需要像它选择这里一样。但在奥利,我需要在" x.x"之后放置它。在途中,在没有设置任何东西的地方之前,但需要在隐藏列中的文本之后进行排序。

我目前在SQL中的订单

ORDER BY CASE WHEN [Way] = '' THEN 2 ELSE 1 END, [Way]

//错误的方式(现在是什么)

Hidden Colum                Pt  Way
Tilsætning_20_prioritet_01  0   0.3
Tilsætning_01_prioritet_01  1   1.0
Tilsætning_12_prioritet_01  1   1.0
Tilsætning_21_prioritet_01  2   2.0
Tilsætning_22_prioritet_01  2   2.0
Tilsætning_23_prioritet_01  2   2.0
Tilsætning_24_prioritet_01  2   2.0
Tilsætning_25_prioritet_01  2   2.0
Tilsætning_27_prioritet_01  2   2.0
Tilsætning_26_prioritet_01  3   3.0
Tilsætning_08_prioritet_01  0   Olie
Tilsætning_09_prioritet_01  0   Olie
Tilsætning_03_prioritet_01  0   Olie
Tilsætning_06_prioritet_01  0   Olie
Tilsætning_07_prioritet_01  0   Olie
Genbrug_prioritet_01        
Vand        

正确的方式(我需要的)

Hidden Colum                Pt  Way
Tilsætning_20_prioritet_01  0   0.3
Tilsætning_01_prioritet_01  1   1.0
Tilsætning_12_prioritet_01  1   1.0
Tilsætning_21_prioritet_01  2   2.0
Tilsætning_22_prioritet_01  2   2.0
Tilsætning_23_prioritet_01  2   2.0
Tilsætning_24_prioritet_01  2   2.0
Tilsætning_25_prioritet_01  2   2.0
Tilsætning_27_prioritet_01  2   2.0
Tilsætning_26_prioritet_01  3   3.0
Tilsætning_03_prioritet_01  0   Olie
Tilsætning_06_prioritet_01  0   Olie
Tilsætning_07_prioritet_01  0   Olie
Tilsætning_08_prioritet_01  0   Olie
Tilsætning_09_prioritet_01  0   Olie
Genbrug_prioritet_01        
Vand

任何人都有任何线索或我需要存档的方式吗?

修改  试用时

ORDER BY CASE WHEN [Way] = '' THEN 2 ELSE 1 END, Hidden Colum 

Tilsætning_01_prioritet_01  1   1.0
Tilsætning_02_prioritet_01  1   1.0
Tilsætning_03_prioritet_01  0   Olie
Tilsætning_04_prioritet_01  0   Olie
Tilsætning_05_prioritet_01  0   Olie
Tilsætning_06_prioritet_01  0   Olie
Tilsætning_07_prioritet_01  0   Olie
Tilsætning_08_prioritet_01  0   Olie
Tilsætning_09_prioritet_01  0   Olie
Tilsætning_10_prioritet_01  0   Olie
Tilsætning_11_prioritet_01  1   1.0
Tilsætning_12_prioritet_01  1   1.0
Tilsætning_13_prioritet_01  0   0.0
Tilsætning_14_prioritet_01  0   0.0
Tilsætning_15_prioritet_01  0   0.1
Tilsætning_16_prioritet_01  0   0.1
Tilsætning_17_prioritet_01  0   0.2
Tilsætning_18_prioritet_01  0   0.2
Tilsætning_19_prioritet_01  0   0.2
Tilsætning_20_prioritet_01  0   0.3
Tilsætning_21_prioritet_01  2   2.0
Tilsætning_22_prioritet_01  2   2.0

2 个答案:

答案 0 :(得分:1)

将HiddenColumn包含在ORDER BY子句中的最后一项:

ORDER BY CASE WHEN [Way] = '' THEN 2 ELSE 1 END, [Way], HiddenColumn

答案 1 :(得分:0)

首先,您需要Way中的数字,然后是'Olie',然后是其他所有数字。

order by (case when Way not like '%[^0-9.]%' then 1
               when Way = 'Olie' then 2
               else 3
          end),
         pt,
         HiddenColumn