简体   繁体   English

我有一个带有nvl和case语句的SQL,必须将其转换为Informatica表达式

[英]I have a SQL with nvl and case statement that has to be converted into Informatica expression

I have the following SQL statement: 我有以下SQL语句:

nvl(W_SALES_INVOICE_LINE_FS.INVOICED_QTY,
case nvl(W_SALES_INVOICE_LINE_FS.NET_AMT,0) when 0 then W_SALES_INVOICE_LINE_FS.INVOICED_QTY
else -1 end)

Could someone help me converting it into an Informatica expression with ISNULL and DECODE(). 有人可以帮助我使用ISNULL和DECODE()将其转换为Informatica表达式。 I tried the following and it gives out Parsing errors: 我尝试了以下操作,它给出了解析错误:

IIF(ISNULL(EXT_INVOICED_QTY), 
DECODE(EXT_NET_AMOUNT, IIF(ISNULL(EXT_NET_AMOUNT),0,EXT_NET_AMOUNT) =0, EXT_INVOICED_QTY, -1),
EXT_INVOICED_QTY)

To note: 要注意:

W_SALES_INVOICE_LINE_FS.INVOICED_QTY = EXT_INVOICED_QTY W_SALES_INVOICE_LINE_FS.NET_AMT = EXT_NET_AMOUNT W_SALES_INVOICE_LINE_FS.INVOICED_QTY = EXT_INVOICED_QTY W_SALES_INVOICE_LINE_FS.NET_AMT = EXT_NET_AMOUNT

Your SQL statement is a little bit strange. 您的SQL语句有点奇怪。 Let's analyse it: 让我们来分析一下:

  W_SALES_INVOICE_LINE_FS.INVOICED_QTY != NULL =>  W_SALES_INVOICE_LINE_FS.INVOICED_QTY
  W_SALES_INVOICE_LINE_FS.INVOICED_QTY = NULL AND W_SALES_INVOICE_LINE_FS.NET_AMT = NULL => W_SALES_INVOICE_LINE_FS.INVOICED_QTY (but it's NULL)
  W_SALES_INVOICE_LINE_FS.INVOICED_QTY = NULL  AND W_SALES_INVOICE_LINE_FS.NET_AMT != NULL = > -1

It seems that you just need to have exactly the same output: 似乎您只需要具有完全相同的输出即可:

  DECODE ( TRUE,
    NOT isNULL( EXT_INVOICED_QTY ),  EXT_INVOICED_QTY , 
     isNULL(EXT_NET_AMT), NULL,
     -1)

The following uses the DECODE function to return what you want. 以下使用DECODE函数返回所需的内容。

Link if you have any questions on DECODE: http://forgetcode.com/Informatica/1057-Decode-Value-Search-or-Nested-If-Else 如果对DECODE有任何疑问,请链接: http : //forgetcode.com/Informatica/1057-Decode-Value-Search-or-Nested-If-Else

DECODE (TRUE,
NOT isNULL(EXT_INVOICED_QTY), EXT_INVOICED_QTY,
isNULL(EXT_NET_AMT), NULL,
-1)

Good Luck! 祝好运!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM