繁体   English   中英

Oracle无效标识符错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM