我有一个包含以下数据的表:
Fiscal Year | Fiscal Quarter | Fiscal Week | Data
2009 | 2 | 22 | 9.5
2009 | 2 | 24 | 8.8
2009 | 2 | 26 | 8.8
2009 | 3 | 28 | 8.8
2009 | 3 | 31 | 9.1
2009 | 3 | 33 | 8.8
我想编写一个查询,该查询将产生以下内容:
Fiscal Year | Fiscal Quarter | Fiscal Week | Data | Trend
2009 | 2 | 22 | 9.5 | NULL
2009 | 2 | 24 | 8.8 | -0.7
2009 | 2 | 26 | 8.8 | 0
2009 | 3 | 28 | 8.8 | 0
2009 | 3 | 31 | 9.1 | 0.3
2009 | 3 | 33 | 8.8 | -0.3
我知道这可以通过将表与上一个财政周进行简单的连接来轻松实现,但这并不总是简单的t1.[Fiscal Week] = t2.[Fiscal Week] - 2
,因为有时差异是 3 周。
我可以通过以下方式轻松提取最大记录:
SELECT
MAX(t1.[Fiscal Week]) "LastWeek"
FROM t1
WHERE t1.[Fiscal Year] = 2009
AND t1.[Fiscal Week] < 31
但是在抽象它以使连接起作用时,我不知所措。
如何在“小于当前记录的最大财政周”上进行自我加入?