NetSuite新手求助:如何计算两自定义公式列的差值
NetSuite 计算两列差值问题解决方法
问题背景
作为NetSuite新手,尝试计算以下两列的差值但未成功:
- 第一列公式:
Case when {linesequencenumber} <> 0 then -nvl({quantity},0) else null end - 第二列公式:
case when {linesequencenumber} = 0 then -nvl({custbody25},0)*nullif(-nvl({quantity},0),0) else null end
问题原因
这两列的CASE条件是互斥的:
- 当
{linesequencenumber} <> 0时,第一列有数值,第二列返回null - 当
{linesequencenumber} = 0时,第二列有数值,第一列返回null
NetSuite中null和任何数值运算的结果都是null,所以直接相减会得到空值,导致计算失败。
解决方案
方案1:合并公式直接计算差值
把两个列的逻辑整合到一个公式里,根据linesequencenumber的取值分别处理:
Case when {linesequencenumber} <> 0 then (-nvl({quantity},0)) - 0 when {linesequencenumber} = 0 then 0 - (-nvl({custbody25},0)*nullif(-nvl({quantity},0),0)) else null end
或者用NVL把空值转成0,简化运算:
NVL(Case when {linesequencenumber} <> 0 then -nvl({quantity},0) else 0 end, 0) - NVL(case when {linesequencenumber} = 0 then -nvl({custbody25},0)*nullif(-nvl({quantity},0),0) else 0 end, 0)
方案2:修改原列公式,替换null为0
如果需要保留原两列,先把它们的else null改成else 0:
- 修改后的第一列公式:
Case when {linesequencenumber} <> 0 then -nvl({quantity},0) else 0 end - 修改后的第二列公式:
case when {linesequencenumber} = 0 then -nvl({custbody25},0)*nullif(-nvl({quantity},0),0) else 0 end
修改完成后,直接用第一列字段 - 第二列字段就能得到正确的差值。
内容的提问来源于stack exchange,提问作者gpaul
相关产品推荐
相关产品推荐

