Это связано с тем, как оператор SELECT транслируется в абстрактное дерево запросов: «все» появляется только в проекционной части результата запроса в дереве, которая находится над фильтрующей частью дерева, поэтому WHERE пункт не может понять «что угодно». Это не какая-то внутренняя деталь реализации, это фундаментальное поведение реляционных запросов: проекция результата происходит после оценки объединений и фильтров.
Действительно тривиально обойти «проблему», сделав иерархию запроса явной:
select ...
from (
select [something] as whatever
from ...
) as subquery
WHERE whatever = ...;
Общее табличное выражение также может использоваться для той же цели:
with cte as (
select [something] as whatever
from ...)
select ... from cte
WHERE whatever = ...;