2014-08-27 41 views
0

這是我第一次使用LAG功能。我理解它是如何在一個簡單的例子上工作的,但我需要加入到其他兩個表中以獲得我期待的結果。最終結果將是1行,其中prevamount字段包含會計期間的pdr.depr值10加入具有延遲功能/無效標識符的另一個表格

當我嘗試運行此SQL時,出現錯誤(CF_SEQNO字段上的無效標識符)。任何幫助我做錯了將不勝感激。謝謝您的幫助。

select 
pdr.BUSINESS_UNIT, 
pdr.DEPTID, 
pdr.ASSET_ID, 
pdr.DEPR, 
pa.DESCR, 
pdr.ACCOUNT_AD, 
pdl.ACCOUNT, 
pdl.JOURNAL_ID, 
pdl.JOURNAL_DATE, 
pdr.FISCAL_YEAR, 
pdr.accounting_period 

FROM (select lag(pdr.depr) over (
        partition by pdr.deptid 
        order by pdr.fiscal_year, pdr.accounting_period) as prevamount, 
       pdr.BUSINESS_UNIT, 
       pdr.DEPTID, 
       pdr.ASSET_ID, 
       pdr.DEPR as curramt, 
       pdr.ACCOUNT_AD, 
       pdr.FISCAL_YEAR, 
       pdr.accounting_period 

     from ps_depr_rpt pdr) 

INNER JOIN PS_DIST_LN pdl 
ON pdl.BOOK = pdr.BOOK 
AND pdl.BUSINESS_UNIT = pdr.BUSINESS_UNIT 
--AND pdl.FISCAL_YEAR = pdr.FISCAL_YEAR 
--AND pdl.ACCOUNTING_PERIOD = pdr.ACCOUNTING_PERIOD 
AND pdl.ASSET_ID = pdr.ASSET_ID 
AND pdl.CF_SEQNO = pdr.CF_SEQNO 

INNER JOIN PS_ASSET pa 
ON pa.ASSET_ID = pdl.ASSET_ID 
AND pa.BUSINESS_UNIT = pdl.BUSINESS_UNIT 

WHERE 
pdr.business_unit = 'A0465' 
AND pdr.BOOK = 'PERFORM' 
AND pdr.fiscal_year = 2014 
AND pdr.accounting_period = 11 
AND pdl.DISTRIBUTION_TYPE = 'DE' 

回答

1

你需要一個表的別名在子查詢:

FROM (select lag(pdr.depr) over (
        partition by pdr.deptid 
        order by pdr.fiscal_year, pdr.accounting_period) as prevamount, 
       pdr.BUSINESS_UNIT, 
       pdr.DEPTID, 
       pdr.ASSET_ID, 
       pdr.DEPR as curramt, 
       pdr.ACCOUNT_AD, 
       pdr.FISCAL_YEAR, 
       pdr.accounting_period 

     from ps_depr_rpt pdr) pdr 
---------------------------------^ 
+0

感謝您的幫助 – Shaves 2014-08-28 13:29:07