这个已经困扰我几个星期了。。。我试图在Cognos Analytics(costpoint(中编写一个公式,如果有人在实际月份达到新的服务年份里程碑,就会返回该公式。
返回一个简单的";真/假";或";是/否";是完美的
基本上,这只是如果他们的服务年限在多个日期范围之间(例如:我希望目前服务年限为4.95年的人的回报值为"是",因为他们将在下个月达到5年(
- 服务年限以数字格式显示在";A";excel和costpoint(cognos(的[服务年限]栏(例如:9.154、4.982、24.995…(
我有一个Excel版本可以工作,如下所示:
- =IF(OR(AND(A1>4.91,A1<=5;是"否"(
我仍然只是熟悉Cognos(costpoint(语法,所以我尝试如下所示编写它:
- 如果(或(和[服务年限]>4.91,[服务年限]-lt;5(,(和([服务年限]>14.91,[工作年限]<15(((,则('yes'(否则('ull'(
没有任何运气。。。
有人想试试吗?:(
在没有开始日期的情况下,这会更容易,并处理更一般的情况(如果他们即将服役45年怎么办?(:
case
when MOD(MOD([Years Of Service], 5) + 1, 5) > 0.91
and MOD(MOD([Years Of Service], 5) + 1, 5) <= 1
then 'yes'
else 'no'
end
看看谁达到了一个";服务年限";下个月是5年里程碑的值,创建一个过滤器:
mod(
_months_between (
_first_of_month (
_add_months (current_date, 1)
),
_first_of_month ([StartDate])
),
60
) = 0
但如果你有服务开始日期,你可以使用日期计算来查看谁在下个月达到5年里程碑:
mod(
_months_between (
_first_of_month (
_add_months (current_date, 1)
),
_first_of_month ([StartDate])
),
60
)
查看各种case函数,并在表达式中尝试它们。
我认为您不需要开始日期,您可以只关注服务年限字段的小数部分。你知道,如果小数部分等于或大于9166,那么服务年限在最后一个月。
if ([YOS]-cast([YOS],integer)>=0.9166)
then
('Yes')
else
('No')
如果你想计算一个重要的里程碑年,比如5、10、15,那么你可以更进一步。
if mod(
if ([YOS]-cast([YOS],integer)>=0.9166)
then
(cast([YOS],integer)+1)
else
(cast([YOS],integer)),5=0)
then ('Milestone Year')
else ('Keep on Working!')
希望以上内容能有所帮助!