sql server使用计算列

Vag*_*nos 6 sql sql-server-2008

我有这样的查询:

select 
(price1 + price2 + price3) as total_price 
from prices
Run Code Online (Sandbox Code Playgroud)

我如何使用计算列total_price来计算其他总数?

select 
(price1 + price2 + price3) as total_price,
(price4 + total_price) as total_price2
from prices    
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Mar*_*ith 11

不可以引用在同一级别定义的列别名.出现在同一逻辑查询处理阶段的表达式将被评估为在同一时间点.

正如Joe Celko所说

事情在SQL中"一下子"发生,而不是像从左到右那样在顺序文件/过程语言模型中发生

您可以在CTE中定义它,然后在CTE外重复使用它.

WITH T
     AS (SELECT ( price1 + price2 + price3 ) AS total_price,
                price4
         FROM   prices)
SELECT total_price,
       ( price4 + total_price ) AS total_price2
FROM   T  
Run Code Online (Sandbox Code Playgroud)