据我了解您的描述,您可以像这样提取第 8 期的数据:
SELECT item_id, pct_complete
FROM YourTable
WHERE rpt_period = 8;
之前的期间将是相同的查询,只是将 7 替换为期间。
因此,采用第 8 期查询并将其加入第 7 期的子查询。
SELECT
y.item_id,
(y.pct_complete - Nz(sub.pct_complete, 0)) AS change_in_pct_complete
FROM YourTable AS y
LEFT JOIN
(
SELECT item_id, pct_complete
FROM YourTable
WHERE rpt_period = 7
) AS sub
ON y.item_id = sub.item_id
WHERE rpt_period = 8;
Nz()
当周期 8 不存在周期 7 匹配时,该表达式将用 0 替换 Null item_id
。
如果您需要一个不会在 Access 会话中运行的查询,则该Nz()
功能将不可用。在这种情况下,您可以使用IIf()
表达式......它不是那么简洁,但它可以完成工作。
IIf(sub.pct_complete Is Null, 0, sub.pct_complete)