我有一个查询,看起来像这样:SQL服务器:列别名访问
Select (numberLateOrders/numberOfOrders) as percentFailed
From Orders
现在我希望能够添加Where
条款,但它似乎访问列别名percentFailed
像别名不直到查询完成才被识别。这是真的和/或有没有解决这个问题?
谢谢!
我有一个查询,看起来像这样:SQL服务器:列别名访问
Select (numberLateOrders/numberOfOrders) as percentFailed
From Orders
现在我希望能够添加Where
条款,但它似乎访问列别名percentFailed
像别名不直到查询完成才被识别。这是真的和/或有没有解决这个问题?
谢谢!
一个外部查询只需添加到现有答案
或者使用子查询
select
percentFailed
from (
Select (numberLateOrders/numberOfOrders) as percentFailed
From Orders
) t
where
percentFailed > 0
做
WHERE不能老是看到的别名,只是重复表达
Select (numberLateOrders/numberOfOrders) as percentFailed
From Orders
WHERE (numberLateOrders/numberOfOrders) >0
是的,这是真的,列别名将无法访问/提供WHERE
子句,因为执行的逻辑顺序的SQL和每即SELECT column alias
在WHERE
之后,因此WHERE
将不能识别它们。你将不得不再次添加计算/表达WHERE
像下面
Select (numberLateOrders/numberOfOrders) as percentFailed
From Orders
WHERE (numberLateOrders/numberOfOrders) > some_value
另一种解决方案(没有更好的)是使用像
select percentFailed
from
(
Select (numberLateOrders/numberOfOrders) as percentFailed
From Orders
) tab
where percentFailed > some_value