【问题标题】:Error in Oracle BI expressionOracle BI 表达式中的错误
【发布时间】:2018-03-19 14:03:13
【问题描述】:

我正在尝试检查该字段是 0 还是 null,如果是,则剩余金额将等于发票金额。

出现此错误,我搜索了它,但什么也没找到!

代码如下:

IF (G_Invoice.Amount_Paid = 0 OR G_Invoice.Amount_Paid is null )

then

Remaining_Amount := G_Invoice.Invoice_Amount

else

G_Invoice.Invoice_Amount-G_Invoice.Amount_Paid

end if;

【问题讨论】:

  • 你试过case语句吗(例如gerardnico.com/dat/obiee/obis/logical_sql/case)?
  • THEN 部分包含一个分配,这是正确的。 ELSE 部分没有 - 它只是一个算术表达式。您在该分支中缺少Remaining_Amount :=

标签: oracle expression business-intelligence obiee fusion


【解决方案1】:

如果在 Oracle BI 中计算度量,LSQL 代码应该是:

Remaining_Amount - ifnull(G_Invoice.Amount_Paid,0)

【讨论】:

    【解决方案2】:

    错误很容易解释(我在简短的评论中这样做了)。

    但同样的结果可能更简单:

    Remaining_Amount := G_Invoice.Invoice_Amount-NVL(G_Invoice.Amount_Paid, 0)
    

    不需要 IF 语句(隐藏在 NVL 中)。无需将支付金额为零的情况视为特殊情况(如果减去0,则与返回INVOICE_AMOUNT相同)。 NVL 将导致 null 被转换为零。

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多