ORDER BY 子句可包括 CASE 表达式来指定排序键。
CREATE TABLE tab_case(a_col INT, b_col VARCHAR(32)); SELECT a_col, SUM(a_col) FROM tab_case GROUP BY a_col ORDER BY CASE WHEN a_col IS NULL THEN 1 ELSE 0 END ASC, AVG(a_col);在此,ASC 关键字显式地将 CASE 表达式的结果标识为升序排序键。在缺省情况下,AVG(a_col) 排序键也指定升序排序。
在下列类似的示例中,基于同一 tab_case 表上的查询,第二个 CASE 表达式返回或者 1 或者 0 作为返回的 AVG(a_col) 聚集值的排序键值。
SELECT a_col, SUM(a_col) FROM tab_case GROUP BY a_col ORDER BY CASE WHEN a_col IS NULL THEN 1 ELSE 0 END ASC, AVG(a_col), CASE WHEN AVG(a_col) IS NULL THEN 1 ELSE 0 END;