Как называется функция PostgreSQL, которая позволяет ссылаться на псевдонимы в операторе SELECT? - PullRequest
0 голосов
/ 19 мая 2018

Моя компания переходит с Netezza на AWS / Redshift.При использовании Netezza удобно называть столбец в операторе select, а затем снова иметь возможность ссылаться на него, например:

Select Column1 + Column2 as Alias1, Alias1 + Column3 as Alias2 from X where Alias1 > 0

Netezza позволяет мне это делать, однако я не могу в Redshift.(Я также не могу сделать это в MS SQL).Я не смог бы сослаться на псевдоним столбца в операторе SELECT, а также не смог бы сослаться на него в предложении WHERE.

Как называется эта функция, и есть ли способреализовать это?Без этой функциональности я вынужден утомительно писать подзапросы.

Спасибо

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Вы не можете сделать это, но есть очень конкретная и логическая причина, почему бы и нет.

Фазы, вовлеченные в логическую обработку запроса SQL, следующие: в указанном порядке:

FROM clause
WHERE clause
GROUP BY clause
HAVING clause
SELECT clause
DISTINCT clause
ORDER BY clause
LIMIT / OFFSET clause

Таким образом, к тому времени, как ваш запрос достигнет select, все остальное уже выполнено.Часть where находится далеко перед частью select и, следовательно, не может видеть псевдонимы столбцов, которые вы установили.

Вы можете прочитать больше по этой ссылке .

0 голосов
/ 19 мая 2018

вы не можете сделать это, но вы можете написать CTE, которые похожи на подзапросы, но расположены в логическом порядке:

WITH
q1 as (
    select Column1 + Column2 as Alias1, Column3
    from x
)
select *, Alias1 + Column3 as Alias2
from q1
where Alias1>0
...