如果要引用该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的计算来包含在查询中,那么CTE看起来会更干净。