一个快速的问题。我有一个查询,该查询带回2列“说明”和“金额”。在说明中,我们有3个结果。
“金-拥有”,“铜-没有土地”和“银-已识别/提供”
我希望结果按金,银,铜的顺序显示
Order By Asc或Desc无法实现此目的。有没有一种方法可以自定义Order by子句?
任何对此的帮助将不胜感激,Rusty
在内CASE,您可以将数字赋给每个数字并按升序排列。如果您需要查询大表,请考虑添加索引Description以提高排序性能。
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
Amount
ORDER BY CASE WHEN Description = 'Gold '... END ASC, Amount DESC, AnotherColumn ASC