我是编写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经验的人都有任何想法吗?
答案 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);
你能告诉我们你得到的确切错误