在我上个月试图用这个表达式展示的图表中:
=If( [SH_historico_1.ANOMES] >= '$(=Max([SH_historico_1.ANOMES])-1)' and [SH_historico_1.ANOMES] <= '$(=Max([SH_historico_1.ANOMES]))', [SH_historico_1.ANOMES])当我写[SH_historico_1.ANOMES]的时候,我指的是周期,比如'YYYYMM‘,当我减去-1时,我只是把1减去,例如: 202002 -1 = 202001,所以是有效的,因为它会计算出正确的周期。
但是..。如果月份是一月的话?YYYY01?示例202001 -1 = 202000 00月编号不存在。00应该是12。
所以我在想,如果我把这个数字当做一个日期呢?我正在尝试使用Date()函数,但我有点卡住了。
正确的语法会是怎样的呢?
我正在考虑的另一个解决方案是在编辑器代码中设置一些代码,但仍在开发这个想法。
欢迎任何帮助。
发布于 2020-03-25 03:23:50
当你想要加/减月份时,最好使用AddMonths()函数:AddMonths( DateField, NumberOfMonths)。此函数将处理一月份的问题
在您的情况下将是:=AddMonths(Max([SH_historico_1.ANOMES]), -1) (正如您所看到的,月数可以是负数,这将从日期中减去月份)
还有一点建议:如果您计划在表达式中使用此计算,请考虑使用Set Analysis而不是if..then..else语句。if语句速度较慢,并且在表达式中使用时会消耗更多资源
https://stackoverflow.com/questions/60837193
复制相似问题