2014-08-27 77 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