spotfire 上个月记录和上季度记录的计算列

Posted

技术标签:

【中文标题】spotfire 上个月记录和上季度记录的计算列【英文标题】:spotfire Calculated column for Previous Month Records and Previous Quarter records 【发布时间】:2017-04-26 03:39:15 【问题描述】:

为了获取上个月的记录,我尝试了以下表达式:

If((Month([Site Date])=(Month(DateTimeNow()) - 1)) and (Year([Site Date])=Year(DateTimeNow())),1,0)

但是当DateTimeNow() 是一月时,这就有问题了。由于年份是从2016年到2017年,所以年份条件不满足,获取记录会有些出入。

我对上一季度的记录也有同样的问题。

如果有人帮助我修复上述代码会很有帮助。

先谢谢大家了!

问候

桑托什

【问题讨论】:

【参考方案1】:

您是正确的,您需要检查年份和月份,但您需要使用DATEADD() 来获取正确的值。使用此方法,您可以将其与上个月的年份和月份进行比较,而不管它在日历上的哪个位置。例如 DateAdd('month',-1,Date(2017,01,26)) 将是 12/26/2016

If(Month([Site Date])=Month(DateAdd("month",-1,DateTimeNow())) and Year([Site Date])=Year(DateAdd("month",-1,DateTimeNow())),1,0)

您可以通过将 DateTimeNow() 强制设置为 1 月日期来对此进行测试。

If(Month([Site Date])=Month(DateAdd("month",-1,Date(2017,01,26))) and Year([Site Date])=Year(DateAdd("month",-1,Date(2017,01,26))),1,0)

【讨论】:

【参考方案2】:

这个怎么样:

case  
when Month(DateTimeNow())=1 then Date(Concatenate("12/1/",Year(Date(DateTimeNow())) - 1))
else Date(Concatenate(Month(Date(DateTimeNow())) - 1,"/1/",Year(Date(DateTimeNow()))))
END

【讨论】:

以上是关于spotfire 上个月记录和上季度记录的计算列的主要内容,如果未能解决你的问题,请参考以下文章

Spotfire 创建增长计算列

spotfire 使用 over 函数计算列

Spotfire 自定义表达式

从spotfire中的总和和计数创建一个平均列

从 Netezza 数据库中获取最近 24 个月的数据

Spotfire 自定义格式和自定义表达式