根据数据值以各种方式排序 sql 查询结果
sorting sql query results in various ways depending on data value
给定 sql 查询的以下结果:
1,
4,
Red,
Blue,
3,
Green,
2,
Yellow,
Magneta,
Rubi
我要达到的正确顺序是:
红色、蓝色、绿色、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
你可以试试这个
SELECT myCol
FROM myTable
ORDER BY
CASE WHEN myCol='Red' THEN 1
WHEN myCol='Blue' THEN 2
WHEN myCol='Green' THEN 3
ELSE 4
END,
CASE
WHEN myCol NOT IN ('Red','Blue','Green') AND IsNumeric(party_id) = 1
THEN CAST(myCol AS INT)
ELSE -1
END,
CASE
WHEN myCol NOT IN ('Red','Blue','Green') AND IsNumeric(party_id) = 0
THEN myCol
END;
给定 sql 查询的以下结果:
1,
4,
Red,
Blue,
3,
Green,
2,
Yellow,
Magneta,
Rubi
我要达到的正确顺序是:
红色、蓝色、绿色、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
你可以试试这个
SELECT myCol
FROM myTable
ORDER BY
CASE WHEN myCol='Red' THEN 1
WHEN myCol='Blue' THEN 2
WHEN myCol='Green' THEN 3
ELSE 4
END,
CASE
WHEN myCol NOT IN ('Red','Blue','Green') AND IsNumeric(party_id) = 1
THEN CAST(myCol AS INT)
ELSE -1
END,
CASE
WHEN myCol NOT IN ('Red','Blue','Green') AND IsNumeric(party_id) = 0
THEN myCol
END;