Есть операции до и после выбора. Например, distinctа ASтакже инструкции после выбора, category_integerнапример, отфильтровывают повторяющиеся результаты во время самих процессов выбора, и поскольку такие повторяющиеся результаты даже не вводят набор результатов, который нужно упорядочить или сгруппировать.
Когда вы используете AS, вы сообщаете PostgreSQL, чтобы получить результат и поместить его в столбец с именем category_integerв выводе. Вы фактически не делаете переменную здесь, которая доступна во время выполнения запроса, поскольку результат доступен только после выполнения запроса. Таким образом, вы можете сделать это только с помощью подзапросов, в которых у вас есть результат, доступный как виртуальная таблица сам по себе, где category_integerстолбец в таблице, а не переменная.
SELECT category_integer,
CASE WHEN category_integer = 0
THEN 'foo'
ELSE 'bar'
END AS category_label
FROM (SELECT FLOOR(0) AS category_integer FROM test01) AS test02
https://www.postgresql.org/docs/current/static/queries-select-lists.html
https://www.postgresql.org/docs/current/static/queries-table-expressions.html#QUERIES-TABLE-ALIASES