我正在使用的表有一个金额字段,一个会计年度和一个期间字段(以及其他字段)。我需要根据会计年度和期间字段选择金额字段两次。我遇到的问题是如何编写SQL以选择2014财年和第10期的前一金额的记录。我还需要确保它适用于2014/01年,前一期是2013年12月。感谢您的帮助......
SELECT
a.business_unit,
a.amount as CURRENT_AMOUNT,
a.amount as PRIOR_AMOUNT,
a.fiscal_year as FY,
a.period as AP
FROM Asset_Depreciation a
WHERE
a.business_unit = 'A0001'
AND a.fiscal_year = 2014
AND a.period = 11
结果 A0001 500.00(空白)2014 11
答案 0 :(得分:0)
您可以使用lag()
分析函数查找之前的amount
。您可以使用子查询在lag()
过滤器之前应用where
:
select prevamount
, business_unit
, curamount
, fiscal_year
, period
from (
select lag(amount) over (
partition by business_unit
order by fiscal_year, period) as prevamount
, business_unit
, amount as curamount
, fiscal_year
, period
from Asset_Depreciation
) SubQueryAlias
where business_unit = 'A0001'
and fiscal_year = 2014
and period = 11
如果没有子查询,lag()
只会查看一行,而不会找到任何先前的值。