Sql Ms Access查询前一天';日期
如何在Ms Access中创建查询,以将前一天的金额作为期初余额。因此,在运行查询时,我在WorkDay参数框中输入3/10/18,并显示3/10/18和2/10/18的记录。该表的设置如下所示: 工作日…交易ID…金额 2018年2月10日……开业……1000 2018年2月10日……贷项……500 2018年2月10日……借方……300 2018年3月10日…….信用证…….700 2018年10月3日……借方……200 因此,如果我运行2018年3月10日的查询,它应该返回 工作日…交易ID…金额 2018年2月10日……[Expr]……800 2018年3月10日…….信用证…….700Sql Ms Access查询前一天';日期,sql,ms-access,ms-access-2013,ms-access-2016,Sql,Ms Access,Ms Access 2013,Ms Access 2016,如何在Ms Access中创建查询,以将前一天的金额作为期初余额。因此,在运行查询时,我在WorkDay参数框中输入3/10/18,并显示3/10/18和2/10/18的记录。该表的设置如下所示: 工作日…交易ID…金额 2018年2月10日……开业……1000 2018年2月10日……贷项……500 2018年2月10日……借方……300 2018年3月10日…….信用证…….700 2018年10月3日……借方……200 因此,如果我运行2018年3月10日的查询,它应该返回 工作日…交易I
18年10月3日……如果您正在使用GUI,请将
日期添加(“d”、-1、[MyDateParameter])
添加到[MyDateParameter]
字段中[MyDateParameter]
下的OR行
对于SQLWHERE
语句,您将使用
WorkDay=[MyDateParameter] OR Workday=DateAdd("d",-1,[MyDateParameter])
显然,用日期参数的实际值替换
[MyDateParameter]
。首先,请注意请求:
- (您可以编写一个SQL联合查询,但由于联合查询根本不能与可视化设计器一起工作,因此您可以编写和测试该查询,而不必使用“查询设计”视图。因此,我的首选方法是创建两个已保存的查询,而不是嵌入的子查询,然后创建一个合并已保存查询结果的联合。)查询。)
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
质问的:
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]
有关解决方案的说明:
- 您也可以使用DateAdd()函数,但从日期中添加/减去整数默认为天的变化
TransactionID
之间可能存在的冲突。以避免循环引用和无效的参数提示ts,请确保一切正常,以避免冲突。如果它要求TransactionID作为参数,则需要限定对表字段的引用,如TableAlias.TransactionID
,或更正拼写,或将显式值的别名更改为其他值,如“[Expr]”作为TranID
。这可能会解决求和问题,因为贷方的-1值取决于TransactionID字段。