2014-07-10 77 views
0

我很新的编写SQL代码,当我尝试运行下面的代码时,我得到一个无效的标识符。我想知道如果我试图总结的领域正在导致我一个问题。ORA-00904:“ACCUMDEPR”:无效的标识符/选择查询

我试图让1分的记录,其中DEPR和accumdepr领域已加到一起

我也想知道,如果有,你可以提出任何资源,这将有助于我更加knolwedgeable这个。任何帮助将不胜感激.....

SELECT pa.BUSINESS_UNIT as bu, 
pc.DEPTID as deptid, 
pa.ASSET_ID as assetnumber, 
pa.DESCR as descr, 
pa.IN_SERVICE_DT as inservdate, 
pc.COST as assetcost, 
pb.METHOD as deprecmeth, 
pb.LIFE as assetlife, 
Sum(pdr.DEPR) as depr, 
Sum(pdr.DEPR_YTD) as accumdepr 
from PS_ASSET pa 
inner join PS_COST pc on pc.ASSET_ID = pa.ASSET_ID 
inner join PS_BOOK pb on pb.ASSET_ID= pa.ASSET_ID 
inner join PS_DEPR_RPT pdr on pdr.ASSET_ID= pa.ASSET_ID 

where pa.BUSINESS_UNIT = 'A0057' 
and pa.ASSET_ID = '000000000020' 
and pdr.FISCAL_YEAR = '2014' 
and pdr.ACCOUNTING_PERIOD = '11' 

group by bu, 
deptid, 
assetnumber, 
descr, 
inservicedate, 
assetcost, 
deprecmeth, 
assetlife, 
depr, 
accumdepr; 
+0

你能提供DDL? – SQLChao

+0

对不起....我刚刚开始。 DDL是什么意思? – Shaves

回答

0

您不能引用您在选择中定义的列的别名,所以这样做。另外,你不能对组功能进行分组,因此accumdepr的分组在开始时没有多大意义。

SELECT pa.BUSINESS_UNIT as bu, 
pc.DEPTID as deptid, 
pa.ASSET_ID as assetnumber, 
pa.DESCR as descr, 
pa.IN_SERVICE_DT as inservdate, 
pc.COST as assetcost, 
pb.METHOD as deprecmeth, 
pb.LIFE as assetlife, 
Sum(pdr.DEPR) as depr, 
Sum(pdr.DEPR_YTD) as accumdepr 
from PS_ASSET pa 
inner join PS_COST pc on pc.ASSET_ID = pa.ASSET_ID 
inner join PS_BOOK pb on pb.ASSET_ID= pa.ASSET_ID 
inner join PS_DEPR_RPT pdr on pdr.ASSET_ID= pa.ASSET_ID 

where pa.BUSINESS_UNIT = 'A0057' 
and pa.ASSET_ID = '000000000020' 
and pdr.FISCAL_YEAR = '2014' 
and pdr.ACCOUNTING_PERIOD = '11' 

group by 
pa.BUSINESS_UNIT, 
pc.DEPTID, 
pa.ASSET_ID, 
pa.DESCR, 
pa.IN_SERVICE_DT, 
pc.COST, 
pb.METHOD, 
pb.LIFE; 
+0

我感谢您的帮助。只需学习sql,我相信一开始它会变得很慢。再次感谢 – Shaves

1

GROUP BY子句应该只包含用于标识属于同一组的行的列。由于您对pdr.DEPR和pdr.DEPR_YTD的SUM感兴趣,因此我假设您对具有相同bu,deptid,assetnumber,descr,inservciedate,asstecost,deprecmeth和assetlife的行在SUM中感兴趣。 SUM(dpr.DEPR)和SUM(dpr.DEPR_YTD)是您正在查找的计算。

要解决这个问题,你需要删除您GROUP BY最后两个条目,看起来像这样:

GROUP BY bu, 
     deptid, 
     assetnumber, 
     descr, 
     inservicedate, 
     assetcost, 
     deprecmeth, 
     assetlife; 
+0

感谢您的帮助。那为我做了。我可以看到这将是一个缓慢的学习曲线。再次感谢。 – Shaves