问题描述
我在创建基于上一个完整月的财政 YTD 数据查询时遇到问题。我想知道如何比我的临时解决方案更好地解决这个问题(基本上更快)。主要的一点是它应该在不修改代码的情况下始终工作。
源表中的数据晚了~1个月(目前我有从2019/01/01开始到2021/01/31的数据)。
我的目标是有一个表(查询),其中包含从去年 12 月到最后一个完整月以及去年同期的记录。 换句话说:如果我有截至 2021/02/28 的数据,结果应该是 2019 年 12 月、2020 年 1 月、2020 年 2 月、2020 年 12 月、2021 年 1 月、2021 年 2 月的记录。
我现在做的查询:
SELECT A.*,IIF( YEAR(DateAdd("m",1,A.[Issue_date])) >= (SELECT fYear from __MAXyearair ),'YTD','PYTD') AS Yr
FROM Air AS A
WHERE
MONTH(DateAdd("m",A.[Issue_date])) <= (SELECT fMonth FROM __MAXyearair) AND YEAR(DateAdd("m",A.[Issue_date])) >= (SELECT fmYEar FROM __MAXyearair)
__MAXyearair 只是一个表格,只有一行,只有用于条件的字段;对于上述 fmYear 将是 2020,fYear = 2021,fMonth = 3
我删除了代码中所有不重要的元素(附加字段和连接)并将字段名称更改为 * 以使其更短。
有没有可能让它更快?它有效,但我认为它不是很有效。上面的查询稍后被不同的查询用作源。
我一直在想,也许可以制作一个包含月-年和相应 YT 值的表格,例如:
Dec-2019 | PYTD
Jan-2020 | PYTD
Feb-2020 | PYTD
Dec-2020 | YTD
Jan-2021 | YTD
Feb-2021 | YTD
然后在 Air 表和上面的表之间创建一个连接。是否可以更快,以及如何在每次需要时编写自动查询以生成上表?没有 VBA 有可能吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)