SQL 查询与上一日期相比的百分比变化

SQL query for percentage change compared to previous date

我有一个 table 内部访问权限,其中包含部门在不同参考日期的绩效。所有数据都在一个table“tblmain”中。 table 包含以下字段:

每个参考日期由大约100个部门组成,每周我都会导入一个新的参考日期。

我现在的目标是构建一个查询,计算参考日期与上一个参考日期相比的百分比变化。此外,它应该只显示变化大于 5% 的部门。

我目前卡住了。我创建了一个查询,该查询为我提供了上一个参考日期的 val,但仅针对一个特定部门。我不知道如何继续。此查询如下所示:

SELECT TOP 1 tblmain.val
FROM (SELECT TOP 2 tblmain.val, tblmain.ref_date FROM tblmain WHERE dep_id=1 ORDER BY tblmain.ref_date DESC) 
ORDER BY tblmain.ref_date;

如果有任何反馈,我将不胜感激。完成此查询后,我打算以可以选择参考日期和阈值的形式使用此查询。

非常感谢!

为每条记录提取先前值的查询:

SELECT tblMain.ID, tblMain.ref_date, tblMain.dep_id, tblMain.val, 
    (SELECT TOP 1 val FROM tblMain AS Dupe 
     WHERE Dupe.dep_id=tblMain.dep_id AND Dupe.ref_Date < tblMain.ref_date 
     ORDER BY dupe.ref_date) AS PriorVal
FROM tblMain;

现在使用该查询来计算百分比:

SELECT Query1.*, Abs(([PriorVal]-[val])/[PriorVal]*100) AS P
FROM Query1
WHERE (((Abs(([PriorVal]-[val])/[PriorVal]*100))>5));