在_add_months配置之间

Between _add_months configurastion

提问人:Rifi J 提问时间:8/11/2023 最后编辑:Rifi J 更新时间:8/16/2023 访问量:51

问:

我有一份报告,其中我正在使用车辆批发日期(日历度量)的过滤器,试图引入前几个月的交易日期。

例如:今天是 8 年 10 月 23 日。我想查看上个月(7 月 1 日至 7 月 31 日)(每月第一天到每月最后一天)处理的所有数据点。

我使用了“在(_add_days(_first_of_month(_add_months(current_date, -1))))和(_first_of_month(current_date)))”和“_first_of_month(_add_months(current_date,-1)和_last_of_month(_add_months(current_date)”的变体。

当我使用“(_first_of_month(_add_months(current_date, -1)))”时,仅显示 7/1 的数据,而 7/2 以后没有任何数据。我错过了什么?

enter image description here

enter image description here

日期 滤波器 公式 Cognos

评论

0赞 dougp 8/12/2023
根据您的屏幕截图,也许基本的 SQL 教程才是您真正需要的。也许是一个基本的 Cognos 教程。 表示您正在使用 GUI 生成过滤器。函数表达式两边的引号表示您想知道 [Date Wholesaled] 的值何时是您在“筛选条件”对话框的“手动输入项目”框中输入的字符串 ('_first_of_month(_add....')。[Date Wholesaled] 是字符数据类型吗?除此之外,请使用 GO Sales(查询)包重现问题,并在此处发布报告规范 (XML),以便我们从某个地方开始。includes
0赞 dougp 8/12/2023
基于这个问题的质量和您的其他问题:StackOverflow 的存在不仅仅是为了为您完成工作。您可能是时候去接受一些相关培训了。IBM 和其他 Cognos 专家在 YouTube 上提供视频。有几家公司提供有关 IBM Cognos 和其他报告工具的培训。网上有一些很好的 SQL 教程。W3Schools 有一个基本教程,但其中一些内容存在缺陷。MDN 也提供教程。还有其他很好的 SQL 培训来源。

答:

0赞 C'est Moi 8/11/2023 #1

我使用了“在(_add_days(_first_of_month(_add_months(current_date, -1))))和(_first_of_month(current_date)))”和“_first_of_month(_add_months(current_date,-1)和_last_of_month(_add_months(current_date)”的变体。

好的,你得到了什么结果?生成的 SQL 是什么样子的?你的第二个例子应该有效,但我猜你实际做了什么,你说你做了什么。

当我使用“(_first_of_month(_add_months(current_date, -1)))”时,仅显示 7/1 的数据,而 7/2 以后没有任何数据。我错过了什么?

你得到了什么结果?SQL是什么样子的?您使用的完整筛选表达式是什么?就像你使用的其他两个例子一样,这只是片段。

我相信您希望过滤您的报告,以便仅记录上个月的第一天和上个月的最后一个月之间的某些活动的记录。这种理解正确吗?

如果是这样,请创建一个类似于此的过滤器。

_first_of_month ( _add_months ( current_date,-1) ) 和 _last_of_month ( _add_months ( current_date,-1) ) 之间的批发日期

批发日期将是该列的对象引用(如果您使用的是 FM 包,则带有方括号的内容(数据模块标识符使用查询主题(又名表).查询项(又名列)语法))。

你说你已经尝试过类似的东西,但它没有奏效(尽管你没有说发生了什么)意味着你没有说明所有相关细节。

data grid and metadata tree

Generated sql

评论

0赞 Rifi J 8/11/2023
今天将修改生成的 SQL。我使用的过滤器表达式与问题中写的完全相同。当我使用 [“(_first_of_month(_add_months(current_date, -1)))”] 时,它可以工作,但同样,只有在 7 年 1 月 23 日处理的交易才显示 7 年 2 月 23 日至 23 年 7 月 31 日的任何内容。我使用了您建议的过滤器,然后弹出了我之前遇到的错误:[XQE-V5-0011 V5 V5 语法错误在(_first_of_month ( _add_months ( current_date,-1) )和_last_of_month ( _add_months ( current_date,-1) )))“中发现[批发日期]
0赞 Rifi J 8/11/2023
当我使用 [(_first_of_month(_add_months(current_date, -1))) 和 (_last_of_month (_add_months (current_date)))] 时,我收到错误,指出 [XQE-PLN-0268 函数“_add_months”需要 2 个参数在过滤器/切片器表达式“((_first_of_month(_add_months(current_date,-1)))) 和 (_last_of_month (_add_months (current_date))))” 查询 'Query1' 中。 更正它, 我在 [Between (_first_of_month(_add_months(current_date, -1))) 和 (_last_of_month (_add_months (current_date)))] 之间更新和添加,并找到相同的无效令牌“Between”。
0赞 C'est Moi 8/12/2023
像这样的筛选器表达式将仅返回上个月的第一天。你惊讶地发现这一点吗?您能解释一下您对其他结果的期望吗?“(_first_of_month(_add_months(current_date, -1)))” 此外,这不是完整的筛选器表达式,因为它缺少操作数。(即被过滤的查询项)
0赞 C'est Moi 8/12/2023
“[批发日期]在(_first_of_month(_add_months(current_date,-1))和_last_of_month(_add_months(current_date,-1))之间)”,不是我建议的表达方式。您不需要 in 运算符。您可以在两个表达式中使用 IN 运算符。我假设 Wholesaled 只是您在评论中提出的一个错别字。
0赞 C'est Moi 8/12/2023
你能提供一张图片来消除我担心你实际上不在过滤器UI中吗?
0赞 Rifi J 8/16/2023 #2

因此,在对上述建议和其他建议进行了大量修改之后,终于能够将查询详细信息过滤器(Report->查询)中的过滤器添加为 _first_of_month (_add_months (current_date, -1)) 和_last_of_month (_add_months (current_date, -1)) 之间的 [Date Wholesaled]

我不得不使用“详细过滤器表达式”而不是过滤器查询来添加过滤器。图片如下:

enter image description here enter image description here