如何编写一个动态的 NetSuite 日期范围,该范围从每月的第一天(4 个月前)开始到上个月的最后一天结束?

问题描述 投票:0回答:2

我正在 NetSuite 事务搜索的条件中创建一个公式(数字)字段。我的目标是查看 4 个月前(第一天)和上个月(最后一天)之间使用 {transdate} 进行的交易。动态日期范围很重要。

示例:如果今天的日期是 2019 年 1 月 15 日,则标准应过滤掉所有交易,但介于 2018 年 9 月 1 日和 2018 年 12 月 31 日之间的交易除外。如果我在 7/1/19 运行搜索,那么范围应该是 3/1/19 到 6/31/19。

这是失败的公式(数字)代码:

  CASE WHEN {trandate} BETWEEN
  TO_DATE(TRUNC((ADD_MONTHS({today},-4)),’MONTH’)) AND
  TO_DATE(LAST_DAY(TRUNC({today},'MONTH')-1)) THEN 1 ELSE 0 END

导致以下错误:
“你的公式有问题。它可能解析为错误的数据类型、使用未知函数或存在语法错误。请返回,更正公式,然后重新提交。”

我最接近解决问题的是这次迭代:

 CASE WHEN {trandate} BETWEEN 
 TO_DATE(ADD_MONTHS({today},-4)) AND
 TO_DATE(LAST_DAY(TRUNC({today},'MONTH')-1)) THEN 1 ELSE 0 END

问题是第一个 to_date 代码没有给我这个月的第一天。我最终得到的范围是 9/15/18 到 12/31/18。我认为添加一个 TRUNC 会让我回到本月的第一天。我哪里错了?

sql netsuite
2个回答
2
投票

你很接近。我认为这对你有用。第一个日期返回 5 个月并增加一天,第二个日期返回上个月的最后一天。

CASE WHEN {trandate} BETWEEN
LAST_DAY(ADD_MONTHS({today},-5))+1 AND
LAST_DAY(ADD_MONTHS({today},-1)) THEN 1 ELSE 0 END

-2
投票

我正在尝试获取 3 个月前的期间的毛利率,尝试使用以下公式,但是,不工作。

SUM((CASE WHEN {accounttype} = 'Income' AND {trandate} BETWEEN LAST_DAY((ADD_MONTHS({today},-3)))+1 AND LAST_DAY(ADD_MONTHS({today},-2)) 然后 {amount } ELSE ({amount}*-1) END))/ SUM((CASE WHEN {accounttype} = 'Income' AND {trandate} BETWEEN LAST_DAY((ADD_MONTHS({today},-3)))+1 AND LAST_DAY( ADD_MONTHS({today},-2)) THEN NULLIF({amount},0) ELSE END))

© www.soinside.com 2019 - 2024. All rights reserved.