【问题标题】:Crystal equivalent to Tableau's Lookup functionCrystal 相当于 Tableau 的 Lookup 功能
【发布时间】:2016-09-14 05:08:14
【问题描述】:

我正在尝试在 Crystal Reports 中重新创建下表:

用于生成表格的样本数据:

该表传达了有关 4 个度量的信息:冰棒销量、预期冰棒销量(预算)、苏打水销量和预期苏打水销量(预算)。它显示冰棒销售额和苏打水销售额的当月值及其上一年的值,并将当前值的方差与预算值和上一年的值进行比较。

在 Tableau 中,我使用了一个计算字段,该字段利用 Tableau 的查找函数 ("LOOKUP(SUM(PopsicleSales), -12)") 来获取 12 个月前 PopsicleSales 的值。如何对公式字段执行相同操作?

【问题讨论】:

  • 我发现了一篇建议以下内容的帖子,但它为我返回 0: if Month(DateValue({table.Date})) = Month({?ReportDate}) and Year(DateValue({ table.Date})) = Year(DateAdd("m",-12, {?ReportDate})) 然后 {table.PopsicleSales}
  • 您可能无法仅使用公式来做到这一点。 Crystal 一次只评估一个事物,然后在进入下一个记录时几乎“忘记”它们。您需要一个运行总计。
  • 我尝试使用 SourceData$.PopsicleSales 上的 Running Total 和以下评估公式(其中 6/30/2016 是报告运行日期,它作为参数传递并用作报告选择标准): {SourceData$.Date} >= DateAdd ("yyyy", -1, #6/30/2016#) 但是,它返回了 2016 年 6 月 30 日的 PopsicleSales 值,而不是 6/30/ 的值2015.
  • 在我修改了评估公式并调整了报告(见下文)后,4444 提出的运行总计想法奏效了。

标签: crystal-reports tableau-api


【解决方案1】:

在报表页脚中使用运行总计。这些类似于特殊的汇总字段,您可以在其中选择要包含在总和中的项目以及要排除的项目。

在“使用公式”部分,输入如下内容以仅评估从现在到一年前的记录:

{SourceData$.Date} = DateAdd("yyyy", -1, {?ReportDate})

【讨论】:

  • 感谢您的建议。但是,Running Total 似乎不是我需要的。我需要上一年同一个月的冰棒销售额的离散值(例如,如果您运行 2016 年 6 月 30 日的报告,则为 2015 年 6 月 30 日,如果您运行 2/29 的报告,则为 2015 年 2 月 28 日/2016)。我尝试了您的建议,运行总计返回报表运行日期的冰棒销售额。
  • 4444,您的建议是正确的。我不得不将评估公式更改为 {SourceData$.Date} = DateAdd("yyyy", -1, {?ReportDate})。然后我清除了记录选择标准,它将检索到的数据限制为一行。最后,我取消了除报告日期 ({SourceData$.Date} {?ReportDate}) 之外的所有日期的详细信息部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 2012-06-18
相关资源
最近更新 更多