在Sql Server中按case和Union排序

NoN*_*aMe 2 sql-server union sql-order-by

我有一个与此类似的查询,

SELECT Col_a, Col_b, 0 AS Col_c FROM table1
WHERE confitions 

UNION 

SELECT Col_a, NULL AS Col_b, Col_c FROM table2
WHERE confitions 

ORDER BY CASE WHEN Col_a='Other' THEN 1 ELSE 0 END , 
Col_a
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个查询时,它给了我一个错误: ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator. Severity 16

如果我删除该case声明它工作正常,任何人都可以帮我解决这个问题,提前谢谢.

Boh*_*ian 8

使用内部查询:

SELECT * FROM (
    SELECT Col_a, Col_b, 0 AS Col_c FROM table1
    WHERE conditions 

    UNION 

    SELECT Col_a, NULL AS Col_b, Col_c FROM table2
    WHERE conditions 
) x
ORDER BY CASE WHEN Col_a='Other' THEN 1 ELSE 0 END, Col_a
Run Code Online (Sandbox Code Playgroud)