NetSuite已保存搜索:按公式实现至上月末销售额同比对比
NetSuite已保存搜索:去年/今年至上月末销售额对比公式修复
错误原因分析
你调整后的公式核心问题是**BETWEEN关键字用法错误**:BETWEEN需要两个具体的日期值作为范围边界,而你在其中放入了TO_DATE({TODAY},'YYYY')=TO_CHAR({shipdate},'YYYY')这类逻辑判断语句,直接导致语法无效。
正确公式实现
以下是优化后的公式,合并了重复的CASE判断,同时修正了退货类单据的金额冲减逻辑(退货/贷项通知单金额需取负值,避免销售额计算失真)。
列1:去年至上月末销售额(公式数值)
CASE -- 发票、销售订单用发货日期判断 WHEN ({type} IN ('Invoice', 'Sales Order') AND {shipdate} BETWEEN ADD_MONTHS(TRUNC({TODAY}, 'YEAR'), -12) AND ADD_MONTHS(TRUNC({TODAY}, 'MONTH'), -13)) -- 退货授权、贷项通知单用交易日期判断 OR ({type} IN ('Return Authorization', 'Credit Memo') AND {trandate} BETWEEN ADD_MONTHS(TRUNC({TODAY}, 'YEAR'), -12) AND ADD_MONTHS(TRUNC({TODAY}, 'MONTH'), -13)) THEN {AMOUNT} * CASE WHEN {type} IN ('Return Authorization', 'Credit Memo') THEN -1 ELSE 1 END ELSE 0 END
列2:今年至上月末销售额(公式数值)
CASE -- 发票、销售订单用发货日期判断 WHEN ({type} IN ('Invoice', 'Sales Order') AND {shipdate} BETWEEN TRUNC({TODAY}, 'YEAR') AND ADD_MONTHS(TRUNC({TODAY}, 'MONTH'), -1)) -- 退货授权、贷项通知单用交易日期判断 OR ({type} IN ('Return Authorization', 'Credit Memo') AND {trandate} BETWEEN TRUNC({TODAY}, 'YEAR') AND ADD_MONTHS(TRUNC({TODAY}, 'MONTH'), -1)) THEN {AMOUNT} * CASE WHEN {type} IN ('Return Authorization', 'Credit Memo') THEN -1 ELSE 1 END ELSE 0 END
公式逻辑说明
TRUNC({TODAY}, 'YEAR'):获取当年1月1日ADD_MONTHS(TRUNC({TODAY}, 'MONTH'), -1):获取上月最后一天(即至上月末的日期)ADD_MONTHS(..., -12):将日期范围偏移到去年同期- 退货类单据乘以
-1:因为这类单据是冲减销售额,避免把退货金额计入正向销售额
已保存搜索配置步骤
- 在NetSuite已保存搜索中添加两个**公式(数值)**类型的列
- 分别将上述两个公式粘贴到对应列的公式编辑器中
- 给列设置清晰的名称(如“去年至上月末销售额”、“今年至上月末销售额”)
- 在搜索结果的“结果”标签页中,对这两列设置汇总类型为总和,即可得到累计销售额
内容的提问来源于stack exchange,提问作者Alex Brody
相关产品推荐
相关产品推荐

