我有这样的查询:使用SQL Server计算列
select
(price1 + price2 + price3) as total_price
from prices
我如何使用计算列TOTAL_PRICE计算其他总这样吗?
select
(price1 + price2 + price3) as total_price,
(price4 + total_price) as total_price2
from prices
这可能吗?
我有这样的查询:使用SQL Server计算列
select
(price1 + price2 + price3) as total_price
from prices
我如何使用计算列TOTAL_PRICE计算其他总这样吗?
select
(price1 + price2 + price3) as total_price,
(price4 + total_price) as total_price2
from prices
这可能吗?
不,不可能引用在同一级别定义的列别名。出现在相同逻辑查询处理阶段的表达式为evaluated as if at the same point in time。
事情发生“一下子”,在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
select T.total_price,
P.price4 + T.total_price as total_price2
from prices as P
cross apply (select P.price1 + P.price2 + P.price3) as T(total_price)
我也考虑在桌子上computed column如果将经常使用
ALTER TABLE prices ADD
total_price AS (price1 + price2 + price3)
那么你的查询是
select
total_price,
(price4 + total_price) as total_price2
from prices
这样,你可以申请D RY原则......
'这可能吗?',你有没有尝试过吗? –
Ofcourse我试过了。我收到“无效的列total_price”消息。 是我试图完成的可能吗? – Khronos
不在同一查询中 - 查询处理器不能使用输出列作为输入列。您需要每次都写出公式,或者进行内部查询,该查询计算一级计算列,然后从该查询中进行选择,计算下一级公式。 – Arvo