Если вы хотите сослаться на значение, которое вычисляется в предложении SELECT
, вам нужно переместить существующий запрос в под-SELECT:
SELECT
/* Other columns */,
ColumnA,
ColumnA + 10 as ColumnB
FROM
(select table.id, table.number, complex stuff [ColumnA].. from table ...
) t
Вы должны ввести псевдоним для этой таблицы(как указано выше, t
, после закрывающей скобки), даже если вы не собираетесь его использовать.
(Эквивалентно - если вы используете SQL Server 2005 или более позднюю версию - вы можете переместить существующийзапрос в CTE):
;WITH PartialResults as (
select table.id, table.number, complex stuff [ColumnA].. from table ...
)
SELECT /* other columns */, ColumnA, ColumnA+10 as ColumnB from PartialResults
CTE имеют тенденцию выглядеть чище, если у вас есть несколько уровней частичных вычислений, то есть, если у вас теперь есть вычисления, которые зависят от ColumnB для включения в вашзапрос.