【发布时间】:2017-07-14 10:04:09
【问题描述】:
给定以下 sql 查询的结果:
1,
4,
Red,
Blue,
3,
Green,
2,
Yellow,
Magneta,
Rubi
我想要达到的正确顺序是:
红、蓝、绿、磁、红宝石、黄、1、2、3、4
- 红色、蓝色和绿色必须始终位于顶部并按顺序排列
- 那么,alpha 项应遵循 asc (M,R,Y) 顺序
- 按照数字项升序排列到 (1, 2, 3...)
我一直在玩以下无济于事,所以如果有人能指出我正确的方向
SELECT myCol FROM myTable
ORDER BY
CASE WHEN myCol='Red' then 1
WHEN myCol='Blue' then 2
WHEN myCol='Green' then 3 END,
CASE
WHEN myCol not in ('Red','Blue','Green') and IsNumeric(party_id) = 0 then myCol END ASC,
CASE
WHEN myCol not in ('Red','Blue','Green') and IsNumeric(party_id) = 1 then CAST(myCol AS INT) END ASC
谢谢!
编辑 1: 我当前的订单实际上正在退货:
1,2,3,4, Magneta, Rubi, Yellow, Red, Blue, Green
【问题讨论】:
-
您使用的是哪个 dbms? (那里有一些特定于产品的 SQL...)
-
对不起,我忘记了:MicrosoftSQL Server 2014
标签: sql sql-server sql-order-by