2014-07-10 149 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