Retorna um valor nulo se as duas expressões especificadas forem iguais. Sintaxe NULLIF ( expression , expression ) Argumentos expression = É qualquer expressão escalar válida. Tipos de retorno Retorna o mesmo tipo que a primeira expression. NULLIF retornará a primeira expression se as duas expressões não forem iguais. Se as expressões forem iguais, NULLIF retornará um valor nulo do tipo da primeira expression. Comentários NULLIF é equivalente a uma expressão CASE pesquisada em que as duas expressões são iguais e a expressão resultante é NULL. É recomendável não usar funções dependentes de tempo, como RAND(), dentro de uma função NULLIF. Isto pode fazer com que a função seja avaliada duas vezes e retorne resultados diferentes nas duas invocações.
SELECT F1_FILIAL, F1_TIPO, F1_DOC, F1_SERIE, D1_DTDIGIT, D1_COD, D1_LOCAL, B1_DESC, F1_FORNECE, F1_LOJA, (D1_CUSTO/NULLIF(D1_QUANT,0)) CUSTENT, B9_CM1, B1_UPRC, ((D1_CUSTO/NULLIF(D1_QUANT,0))- B9_CM1) DIFB9, ((D1_CUSTO/NULLIF(D1_QUANT,0))- B1_UPRC) DIFB1 FROM SF1010 SF1 ,SD1010 SD1, SF4010 SF4, SB9010 SB9, SB1010 SB1 WHERE SF1.D_E_L_E_T_ <> '*' AND SD1.D_E_L_E_T_ <> '*' AND SF4.D_E_L_E_T_ <> '*' AND SB9.D_E_L_E_T_ <> '*' AND SB1.D_E_L_E_T_ <> '*' AND F1_FILIAL = '01' AND D1_FILIAL = '01' AND F4_FILIAL = '01' AND B9_FILIAL = '01' AND B1_FILIAL = '01' AND F1_DOC BETWEEN ' ' AND '999999999' AND F1_SERIE BETWEEN ' ' AND 'ZZZ' AND F1_FORNECE BETWEEN ' ' AND 'ZZZZZZ' AND F1_LOJA BETWEEN ' ' AND 'ZZ' AND F1_TIPO IN ('N ') AND D1_DOC = F1_DOC AND D1_SERIE = F1_SERIE AND D1_DTDIGIT BETWEEN '20140101' AND '20140507' AND F4_CODIGO = D1_TES AND F4_ESTOQUE = 'S' AND B9_COD = D1_COD AND B9_LOCAL = D1_LOCAL AND convert(datetime,B9_DATA) = (SELECT CONVERT(DATE, dateadd(mm, datediff(mm,0, (convert(datetime, D1_DTDIGIT)-50))+1,-1)) FROM SD1010 D1 WHERE D1.D1_FILIAL = SD1.D1_FILIAL AND D1.D1_DOC = SD1.D1_DOC AND D1.D1_SERIE = SD1.D1_SERIE AND D1.D1_FORNECE = SD1.D1_FORNECE AND D1.D1_LOJA = SD1.D1_LOJA AND D1.D1_COD = SD1.D1_COD AND D1.D1_ITEM = SD1.D1_ITEM AND D1.D_E_L_E_T_ = ' ' ) AND B1_COD = D1_COD GROUP BY F1_FILIAL, F1_TIPO, F1_DOC, F1_SERIE, D1_DTDIGIT, D1_COD, D1_LOCAL, B1_DESC, F1_FORNECE, F1_LOJA, D1_CUSTO, D1_QUANT, B9_CM1, B1_UPRC ORDER BY F1_DOC, DIFB9 DESC