一个简短的问题。我有一个查询可以带回2列'描述'和'金额' 在描述中我们有3个结果。
'黄金拥有','青铜 - 没有土地'和'银牌 - 确定/提供'
我希望结果以顺序显示 金,银,铜
按Asc或Desc命令无法达到此目的。有没有办法自定义Order by子句?
对此有任何帮助将不胜感激 生锈的
答案 0 :(得分:2)
在CASE
的内部,您可以将数值归于每个,并对这些值进行排序。如果您需要查询大表,请考虑在Description
上添加索引以提高排序性能。
ORDER BY
CASE
WHEN Description = 'Gold - owned' THEN 0
WHEN Description = 'Silver - identified / offered' THEN 1
WHEN Description = 'Bronze - no land' THEN 2
ELSE 99 /* Any other value (which you should not have) sorts after all */
END ASC /* And don't forget to be explicit about ASC order though it's the default */
由于此功能类似于ORDER BY
中的普通列,如果您需要按Amount
或其他列排序,则可以附加逗号。
ORDER BY
CASE
WHEN Description = 'Gold '...
END ASC,
Amount DESC,
AnotherColumn ASC
答案 1 :(得分:2)
尝试使用CASE声明:
ORDER BY ( CASE Description
WHEN 'Gold - owned' THEN 1
WHEN 'Silver - identified / offered' THEN 2
WHEN 'Bronze - no land' THEN 3
ELSE 0
END)
答案 2 :(得分:2)
通过条款
在您的订单中使用此功能按照案例说明排序' gold'然后1 什么时候'银'然后2 否则3结束asc
答案 3 :(得分:0)
在 ORDER BY 中使用 CASE 条款:
ORDER BY
CASE Description
WHEN ='Gold - owned' THEN 1
WHEN = 'Silver - identified / offered' THEN 2
WHEN = 'Bronze - no land' THEN 3
ELSE 4 END
答案 4 :(得分:-1)
ORDER BY
ORDER BY
子句用于按升序或降序顺序对数据进行排序。
默认情况下,如果未提及订单,则按升序排序。
语法:
按asc / desc顺序排序 -
SELECT column_name1,column_name2,… column_nameN FROM table_name WHERE condition ORDER BYcolumn_name [ASC | DESC];
示例:
SELECT CustomerId , Name FROM customer_details WHERE CustomerId> 0 ORDER BY CustomerId;