我有一个带有以下
的Access查询GL_A.Account,
GL_P.FiscalYear,
GL_P.FiscalPeriod,
GL_P.BeginningBalance,
GL_P.DebitAmount,
GL_P.CreditAmount,
[BeginningBalance]+([DebitAmount]-[CreditAmount]) AS EndingBalance
问题是BeginningBalance
只有1月的值(FiscalPeriod 1)。
我需要有一个新字段ActualBeginngBal
来自上个月EndingBalance
(1月除外)
注意:有许多帐户#' s但每个帐户每个FiscalPeriod / FiscalYear只有1条记录
非常感谢您的帮助 谢谢
答案 0 :(得分:0)
看看这是否有帮助。将表的第二个副本放在查询中,加入Account和FiscalYear上的第一个副本,但不加入FiscalPeriod。然后可以从表的第二个副本计算ActualBeginningBalance,并使用约束来仅选择FiscalPeriod<第一张表中的FiscalPeriod。注意 - 您可能会获得1月的空结果,您可能需要将其转换为0。
好的,它有点复杂 - 我最终使用了与其他响应类似的子查询,但计算了EB而不是试图从表中提取它
SELECT Ledger.Account, Ledger.FiscalYear, Ledger.FiscalPeriod,
[BeginningBalance]+
IIf([FiscalPeriod]<>"01",
(select sum(T.BeginningBalance+T.DebitAmount-T.CreditAmount)
from Ledger T
where T.account=Ledger.account and T.FiscalYear=Ledger.FiscalYear and T.FiscalPeriod<Ledger.FiscalPeriod)
,0)
AS ActualBeginningBalance,
Ledger.DebitAmount AS DebitAmount,
Ledger.CreditAmount AS CreditAmount,
[ActualBeginningBalance]+[DebitAmount]-[CreditAmount] AS EndingBalance
FROM Ledger;
答案 1 :(得分:0)
SELECT T1.Account
, T1.FiscalYear
, T1.FiscalPeriod
, T1.ActualBeginngBal
, (
SELECT TOP 1 T2.EndingBalance
FROM Table1 T2
WHERE CLNG(T2.FiscalYear & Format(T2.FiscalPeriod,"00")) <
CLNG(T1.FiscalYear & Format(T1.FiscalPeriod,"00")) AND
T2.Account = T1.Account
ORDER BY CLNG(T2.FiscalYear & Format(T2.FiscalPeriod,"00")) DESC
) AS BeginningBalance
, T1.EndingBalance
FROM Table1 T1
答案 2 :(得分:0)
如果在主表中使用BeginningBalance,它将更好。因为只有一条记录属于一个帐户。这是一对一的关系。
答案 3 :(得分:0)
如何移动到上一条记录,获取值并返回到原始记录。
例如:
Private Sub txtXYZ1_AfterUpdate()
Dim tmpXYZ As Single
DoCmd.GoToRecord , , acPrevious
tmpXYZ = txtXYZ1
DoCmd.GoToRecord , , acNext
txtPriorXYZ = tmpXYZ
txtXYZChange = txtXYZ1 - txtPriorXYZ
End Sub