该问题猜测是个bug,19c版本执行结果正常,11g版本错误
建议:如果子查询中有group by 和order by,排序字段还需用数值函数处理,避免直接用别名
Oracle版本:11g
原始SQL:
SELECT COUNT(1)
FROM (
SELECT *
FROM (
SELECT A0, SUM(A1 + A2) AS A3
FROM (SELECT 'AA' AS A0, 1 AS A1, 1 AS A2 FROM DUAL
UNION ALL
SELECT 'BB' AS A0, 2 AS A1, 2 AS A2 FROM DUAL
) C
GROUP BY A0
ORDER BY ABS(A3) DESC
) B
WHERE A3 != 0
) A;
子查询查询结果:2条记录
外层查询结果:0(预期为2)
将别名A3改成原始的计算公式后,执行结果正确