Netsuite自定义公式字段使用带有多个WHEN条件的CASE语句返回“无效表达式”

时间:2013-08-13 19:32:03

标签: sql case netsuite

我是编写NetSuite sql案例语句的新手。我已经能够使用单个WHEN条件成功编写CASE语句,但是当我包含多个WHEN条件时,NetSuite会返回“无效表达式”错误。我想知道我是否需要将WHEN条件与空格以外的东西分开。我已经看到了具有多个WHEN条件的嵌套语句的示例,但NetSuite不允许在公式字段中嵌套语句。这是我的声明,它返回一个错误:

CASE WHEN {item.custitem_custid} IN (05,12) 
THEN {amount}*{item.custitem_sharedat50} 
WHEN {item.custitem_custid} IN (37,42,76) 
THEN {amount}*0.02 ELSE {amount}*{item.custitem_sharedat33} 
END

这是我的CASE语句,其中包含一个有效的WHEN条件:

CASE WHEN {item.custitem_custid} IN (05,12) 
THEN {amount}*{item.custitem_sharedat50} 
ELSE {amount}*{item.custitem_sharedat33} END 

任何有NetSuite经验的人都有任何想法吗?

3 个答案:

答案 0 :(得分:3)

您必须启动并终止每个Case语句

CASE WHEN {item.custitem_custid} IN (05,12) 
  THEN {amount}*{item.custitem_sharedat50} 
ELSE 
   CASE WHEN {item.custitem_custid} IN (37,42,76) 
      THEN {amount}*0.02 ELSE {amount}*{item.custitem_sharedat33} 
   END
END

这是我在保存的搜索中使用的案例陈述

CASE WHEN {classnohierarchy} = 'Snow' THEN 
   CASE WHEN {custbody_hdr_cs_status} IN ('Follow-up','Follow-up & Term') THEN 0 
   ELSE 
      CASE WHEN {shipstate} IN ('NV','NY','PA','SD','UT','VA','WY') THEN 1 
      ELSE 0 
      END 
   END 
ELSE 0 
END

答案 1 :(得分:0)

我也碰到了同样的问题。这似乎是系统中的一个错误。您应该向NetSuite提交支持请求。在修复此问题之前,请改用DECODE。

答案 2 :(得分:0)

以下是一个包​​含多个 时的示例代码。它对我有用。

var formula = "case  when {internalid} IN (10555) then 'a'"
                 + " when {internalid} IN (10556) then 'b'"
                 + " when {internalid} IN (10557) then 'c'"
                 + " else 'd' end";
var filter = new nlobjSearchFilter('formulatext', null, 'contains', 'a').setFormula(formula);
var searchResult = nlapiSearchRecord('salesorder', null, filter);

你能告诉我们你得到的确切错误