一个简单的问题。我有一个查询返回 2 列“描述”和“金额”,在描述中我们有 3 个结果。
“黄金 - 拥有”、“青铜 - 无土地”和“白银 - 已识别/提供”
我希望结果按金、银、铜的顺序显示
按升序或降序排序无法实现此目的。有没有办法自定义 Order by 子句?
对此有任何帮助将不胜感激,谢谢 Rusty
在 a 内部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 */
Run Code Online (Sandbox Code Playgroud)
由于这与 中的普通列一样工作ORDER BY,因此如果您需要按Amount或其他列排序,可以在其后附加逗号。
ORDER BY
CASE
WHEN Description = 'Gold '...
END ASC,
Amount DESC,
AnotherColumn ASC
Run Code Online (Sandbox Code Playgroud)