[英]Oracle Invalid Identifier Error
我知道以前曾有人问过这个问题,但我看过其他问题,但我的查询仍然无法正常工作。 我有一张桌子,上面有过去100年左右的美国职业棒球大联盟击球统计数据,我试图找到该选手的ID,本垒打以及该年(2012)本垒打总命中率的百分比。
查询:
select playerid, hr, hr/sum(hr) over (partition by playerid, yearid)*100 p
from mlbbattingstats
where yearid=2012 and p != 0
order by hr;
错误:
第3行发生错误:
ORA-00904:“ P”:无效的标识符
我尝试了多种不同的别名,并得到了相同的错误。 如果以前已回答过,对我做错的任何帮助将不胜感激。
您不能在相同的查询级别上引用列别名(除了order by
)。 您需要将语句包装到派生表中:
select *
from (
select playerid, hr, hr/sum(hr) over (partition by playerid, yearid)*100 p
from mlbbattingstats
where yearid = 2012
)
where p <> 0
order by hr;
如果p <> 0
,则hr <> 0
。 因此,您的查询似乎等同于:
select playerid, hr,
hr/sum(hr) over (partition by playerid, yearid)*100 as p
from mlbbattingstats
where yearid = 2012 and hr <> 0
order by hr;
您最初的问题是,不能将where
子句中的select
中定义的列别名用作同一级别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.