Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vitor Bonfim

Somatório de 2 campos no oracle

Recommended Posts

Bom dia,

 

Gostaria de solicitar a ajuda dos senhores(as) para um problema que estou tendo na conclusão de uma view onde estou migrando do SQL Server para o Oracle.

Segue abaixo a query e o problema:

 

CREATE view vw_Teste2

 

as

 

SELECT

cod_rede,

Desc_Rede,

sum(cast(numpedido as float)) pedido ,

isnull(sum(adiantamento),0) Adiantamento,

isnull(sum(contestacoes),0) Contestação ,

isnull(sum(campanha_incentivo),0) Campanha,

isnull(sum(saldo_devedor),0) Saldo_Devedor,

isnull(Total_Comissao_3,0) Total_Comissao_3,

isnull(Total_Comissao_2,0) Total_Comissao_2,

isnull(Total_Comissao_1,0) Total_Comissao_1,

isnull(Total_Comissao,0) Total_Comissao,

isnull(ano_mes_premio,0) Ano_Mes_Premio,

isnull(Total_Estorno_3,0) Total_Estorno_3,

isnull(Total_Estorno_2,0) Total_Estorno_2,

isnull(Total_Estorno_1,0) Total_Estorno_1,

isnull(Total_Estorno,0) Total_Estorno,

cast(total as float) Total

 

FROM

(SELECT DISTINCT

cv.cod_rede,

isnull(numpedido,'0') numpedido,

case when cv.tipolanc=14 then isnull(debito,0) * -1 end as adiantamento,

case when cv.tipolanc=11 then isnull(credito,0) end as contestacoes,

case when cv.tipolanc=12 then isnull(credito,0) end as campanha_incentivo,

case when cv.tipolanc=13 then isnull(debito,0) * -1 end as Saldo_Devedor,

isnull((SELECT desc_rede

FROM tblRede

WHERE cod_rede = CV.cod_rede),'') Desc_Rede,

isnull(ANO_MES_3_COMISSAO + ANO_MES_3_BONUS,0) Total_Comissao_3,

isnull(ANO_MES_2_COMISSAO + ANO_MES_2_BONUS,0) Total_Comissao_2,

isnull(ANO_MES_1_COMISSAO + ANO_MES_1_BONUS,0) Total_Comissao_1,

isnull(ANO_MES_COMISSAO + ANO_MES_BONUS + ANO_MES_ESTORNO_COMISSAO + ANO_MES_ESTORNO_BONUS,0) Total_Comissao,

isnull(ANO_MES_PREMIO,0) Ano_Mes_Premio,

isnull(ANO_MES_3_ESTORNO_COMISSAO + ANO_MES_3_ESTORNO_BONUS,0) Total_Estorno_3,

isnull(ANO_MES_2_ESTORNO_COMISSAO + ANO_MES_2_ESTORNO_BONUS,0) Total_Estorno_2,

isnull(ANO_MES_1_ESTORNO_COMISSAO + ANO_MES_1_ESTORNO_BONUS,0) Total_Estorno_1,

isnull(ANO_MES_ESTORNO_COMISSAO + ANO_MES_ESTORNO_BONUS,0) Total_Estorno,

cast(0 as float) total

FROM reaa.tblCCVenda CV,

reaa.tblRel_Redes

WHERE CV.cod_rede = tblRel_Redes.cod_rede

AND CV.ano_ref in (SELECT ano_ref FROM tblRel_Redes WHERE rownum = 1)

AND CV.mes_ref in (SELECT mes_ref FROM tblRel_Redes WHERE rownum = 1))

Relatorio GROUP BY Desc_Rede,CodRede,Total_Comissao_3,Total_Comissao_2,Total_Comissao_1,Total_Comis

sao,ano_mes_premio,Total_Estorno_3,Total_Estorno_2,Total_Estorno_1,Total_Estorno,

total

ORDER BY Desc_Rede

 

 

O erro esta dando na linha onde esta o negrito.

a função ISNULL não esta sendo identificada nessa view. Alguém poderia me ajudar?!

 

Agradeço desde já,

 

Vitor Bonfim

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente utilizar a função NVL no lugar da ISNULL.

Na verdade eu nunca vi essa função no oracle. Apenas como "if v_variavel IS NULL then"...

Você utiliza qual banco?

 

Ex.:

select nvl(a + b	, 0) "resultado_a_+_b"
	 , nvl(a + c	, 0) "resultado_a_+_c"
	 , nvl(b + c	, 0) "resultado_b_+_c"
	 , nvl(a + b + c, 0) "resultado_a_+_b_+_c"
	 , a + nvl(c	, 0) "resultado_a_+_nvl(c)"
	 , b + nvl(c	, 0) "resultado_b_+_nvl(c)"
	 , a + b + nvl(c, 0) "resultado_a_+_b_+_nvl(c)"
  from (select 1	a from dual)
	 , (select 2	b from dual)
	 , (select null c from dual);

 

EDIT:

 

Tu utilizava o MS SQL?

Fiz uma busca rápida e o equivalente para o ISNULL do MSSQL é o NVL da Oracle.

 

http://cf-bill.blogspot.com/2005/10/oracle...oft-isnull.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vitor,

 

A função ISNULL é somente do T-SQL (Transact SQL) que é de origem do SQL Server, para o Oracle, deverá utilizar o padrão ANSI ( a partir da versão 9i), ou SQL99, SQL2000, resumindo, uma função compactivel ao SQL Enginer do Oracle.

 

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.