如何在Access女士中建立查询,以将前一天的金额作为期初余额。因此,在运行查询时,我在WorkDay参数框中输入3/10/18,并显示3/10/18和2/10/18的记录。该表的设置如下:
WorkDay .... TranactionID .... Amount
18/10/2 ...正在打开... 1000
18年2月10日......贷方...... 500欧元
2/10/18 .......借方......... 300
3/10/18 .......信用........ 700
3/10/18 .......借记......... 200
因此,如果我运行查询18/10/3,则应返回
WorkDay .... TranactionID .... Amount
18年2月10日... [专家] ......... 800
3/10/18 .......信用........ 700
3/10/18 .......借记......... 200
答案 0 :(得分:1)
如果您使用的是GUI,请在DateAdd("d",-1,[MyDateParameter])
字段中[MyDateParameter]
下的OR行中添加Workday
。
对于SQL WHERE
语句,您将使用
WorkDay=[MyDateParameter] OR Workday=DateAdd("d",-1,[MyDateParameter])
显然,[MyDateParameter]
可以替换为您的日期参数。
答案 1 :(得分:0)
有关请求的一些注意事项:
期望的结果对当前日期和前一天提出了不同的要求,因此必须有两个不同的查询。如果要在一个结果集中使用它们,则需要使用UNION。
问题和评论答案都没有说明如何处理任何异常情况,例如缺少日期,周末等。以下查询在字面上毫无疑问地采用了“前一天”。
另一个困难是,贷项条目也有正数,因此您必须特别处理它们。如果将Credits保存为负值,则求和将简单而直接。
QueryCurrent:
PARAMETERS [Which WorkDay] DateTime;
SELECT S.WorkDay, S.TransactionID, Sum(S.[Amount]) As Amount
FROM [SomeUnspecifiedTable] As S
WHERE S.WorkDay = [Which WorkDay]
GROUP BY S.WorkDay, S.TransactionID
QueryPrevious:
PARAMETERS [Which WorkDay] DateTime;
SELECT S.WorkDay, "[Expr]" As TransactionID,
Sum(IIF(S.TransactionID = "Credit", -1, 1) * S.[Amount]) As Amount
FROM [SomeUnspecifiedTable] As S
WHERE S.WorkDay = ([Which WorkDay] - 1)
GROUP BY S.WorkDay
联盟查询:
SELECT * FROM QueryCurrent
UNION
SELECT * FROM QueryPrevious
ORDER BY [WorkDay]
有关解决方案的注意事项: