即使所有单独的语句都有效,NetSuite CASE WHEN 也不起作用

NetSuite CASE WHEN not working even though all individual statements work

我在保存的搜索中遇到了 NetSuite 的 CASE WHEN 问题。

这是一个公式(文本)

CASE WHEN {type} THEN 'Kit' ELSE 'not kit' END

这些工作作为公式(数字):

min(({memberitem.quantityonhand}/NULLIF({memberquantity},0))/(NULLIF({memberitem.preferredStockLevel}/NULLIF({memberquantity},0),0)))

还有这个

{quantityonhand}/NULLIF({preferredstocklevel},0)

但是当我尝试将它们作为公式(数字)放在一起时,它们失败了:

CASE WHEN {type}='Kit/Package' THEN min(({memberitem.quantityonhand}/NULLIF({memberquantity},0))/(NULLIF({memberitem.preferredStockLevel}/NULLIF({memberquantity},0),0))) ELSE {quantityonhand}/NULLIF({preferredstocklevel},0) END 

我也尝试过使用多个 CASE WHEN 语句:

CASE WHEN {type}='Kit/Package' 
    THEN min(({memberitem.quantityonhand}/NULLIF({memberquantity},0))/(NULLIF({memberitem.preferredStockLevel}/NULLIF({memberquantity},0),0))) 
ELSE 
    CASE WHEN {type}='Inventory Item' 
        THEN {quantityonhand}/NULLIF({preferredstocklevel},0) 
    ELSE 'nope' 
    END 
ELSE 'nope' 
END

还是不行。

我认为问题可能是我的 CASE WHEN 语句适用于公式(文本),而我的输出适用于公式(数字)。如果是这种情况,我如何以数字格式检查我的项目类型,或者我的代码是否靠谱?

提前致谢。

好的。我想在这里跟进 post 我根据评论中的帮助得出的答案。

@Brian 解决了这个问题并给了我需要的建议来让它工作。他是对的——我混合了聚合和非聚合。这是最终起作用的:

CASE WHEN {type}='Kit/Package' THEN ({memberitem.quantityonhand}/NULLIF({memberquantity},0))/(NULLIF({memberitem.preferredStockLevel}/NULLIF({memberquantity},0),0)) ELSE {quantityonhand}/NULLIF({preferredstocklevel},0) END

因此您可以看到,有效的方法是从套件部分删除 min() 函数。我仍然需要弄清楚如何获得正确的套件库存编号,但@Brian 的建议解决了主要问题。