В Oracle 12.1.0.2 и Oracle 19 c, этот запрос:
with test_data (c1, c2) AS (
SELECT 'A', 1 FROM DUAL UNION ALL
SELECT 'B', 2 FROM DUAL UNION ALL
SELECT 'C', 3 FROM DUAL )
SELECT c1, c2*-1 c2
FROM test_data
order by c2*-1;
Возвращает:
+----+----+
| C1 | C2 |
+----+----+
| A | -1 |
| B | -2 |
| C | -3 |
+----+----+
В других словами, c2
в ORDER BY c2*-1
относится к псевдониму столбца c2
в списке SELECT, а НЕ к столбцу c2
в таблице базы данных.
Мое чтение Oracle SQL Справочное руководство заставляет меня думать, что приведенный выше результат запроса неверен и что Oracle не следует думать, что идентификатор в выражении ORDER BY
ссылается на псевдоним столбца.
* * * * * * * Oracle всегда вел себя так, и я просто никогда не замечал? Есть ли в документации Oracle что-то, указывающее, что приведенные выше результаты верны и ожидаемы?