即使所有单独的语句都有效,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 的建议解决了主要问题。
我在保存的搜索中遇到了 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 的建议解决了主要问题。