创建Saved Search公式计算项目状态耗时天数,修复无效表达式
修复NetSuite Saved Search状态耗时计算公式
原公式问题分析
- 语法错误:CASE语句结构不完整,
ARRAYROWSTOP()和ARRAYSTOP()使用方式错误,NetSuite中引用多值字段无需这类错误调用 - 逻辑缺陷:仅单独处理单个状态的日期,未实现两个状态日期的差值计算,无法得到耗时天数
正确公式实现
以下是用于计算从Proposal - In Queue到Proposal - Sent to Sales状态耗时天数的有效公式(适用于Saved Search的**公式(数值)**字段):
CASE WHEN EXISTS (SELECT 1 FROM systemnotes sn WHERE sn.newvalue = 'Proposal - In Queue' AND sn.recordid = {id}) AND EXISTS (SELECT 1 FROM systemnotes sn WHERE sn.newvalue = 'Proposal - Sent to Sales' AND sn.recordid = {id}) THEN TO_DATE(MAX(CASE WHEN {systemnotes.newvalue} = 'Proposal - Sent to Sales' THEN {systemnotes.date} END)) - TO_DATE(MIN(CASE WHEN {systemnotes.newvalue} = 'Proposal - In Queue' THEN {systemnotes.date} END)) ELSE 0 END
公式说明
- 用
EXISTS子句验证两个状态的变更记录是否存在,避免无效计算 - 通过
MAX和MIN配合CASE筛选,分别获取最新的Proposal - Sent to Sales日期和最早的Proposal - In Queue日期 - 转换日期格式后计算差值,结果即为两个状态间的耗时天数(如示例中的3天)
内容的提问来源于stack exchange,提问作者Markus Bagabaldo
相关产品推荐
相关产品推荐

