合并,分组和重命名

时间:2016-08-11 08:33:01

标签: crystal-reports report formula

这是我目前的公式:

if left ({Command.NextDueDate},7) = "2016-01" then "January'16"
else if left ({Command.NextDueDate},7) = "2016-02" then "February'16"
...
else if left ({Command.NextDueDate},7) = "2017-01" then "January'17"

我将数据库中的日期字符串格式化为2016-01-052016-01-06 ... 2017-01-01。我将它们用作列。

我想查找年份(16),然后是月份(01),然后查找下一列,再次查找年份(16)和月份(2)。然后我想将月份解释为缩短的月份名称,例如1月或2月。最后,我想将数据重新加入。所以最终它会像这样工作:

  • 16 + 01成为Jan16
  • 16 + 02成为Feb16
  • 17 + 01成为Jan17

如果不为每年的每个月手动输入if-else子句,我该怎么做?

2 个答案:

答案 0 :(得分:0)

无需硬编码 - 使用此公式获取月份和年份:

MonthName(Month(CDateTime({Command.NextDueDate}))) +
  Right(Left({Command.NextDueDate},4),2);

答案 1 :(得分:0)

当您通过巧妙使用公式获取信息时,请不要使用if / else语句。有几种方法可以让Ankur的公式变得更好:

要获取简短的月份名称,请使用:MonthName(Month(CDateTime({Command.NextDueDate})),True) <最后 True 将名称缩短为&#34; Jan&#34;,&#34; 2月&#34;,&#34; 3月&#34;等等。

要获得年份,请使用Year(CDateTime({Command.NextDueDate}))

结合这两个公式,它为你做所有工作:

MonthName(Month(CDateTime({Command.NextDueDate})),True) +
  Year(CDateTime({Command.NextDueDate}))