Impossível retorna valor ao invés de null
BOm dia galera, tenho a seguinte SQL que estou rodando sob o bando de dados da TOTVS, minha dúvida vem quando preciso retorna o valor 0 ao ivés de valor NULL. Preciso usar esse trecho em uma soma posteriormente e valores nulo, anulam a soma.
SELECT
(SELECT coalesce(VALOR,0) FROM TTRBMOV(nolock) WHERE CODTRB = 'IPI'
AND TTRBMOV.IDMOV=TMOV.IDMOV
AND TTRBMOV.NSEQITMMOV=TITMMOV.NSEQITMMOV)
FROM TMOV(NOLOCK)
INNER JOIN TITMMOV (NOLOCK) ON (TMOV.CODCOLIGADA=TITMMOV.CODCOLIGADA AND TMOV.IDMOV=TITMMOV.IDMOV)
Há alguma maneira de resolver isso ? Já tentei com isnull e com coalesce. Mesmo assim continuam trazendo valroes NULL
SELECT
(SELECT coalesce(VALOR,0) FROM TTRBMOV(nolock) WHERE CODTRB = 'IPI'
AND TTRBMOV.IDMOV=TMOV.IDMOV
AND TTRBMOV.NSEQITMMOV=TITMMOV.NSEQITMMOV)
FROM TMOV(NOLOCK)
INNER JOIN TITMMOV (NOLOCK) ON (TMOV.CODCOLIGADA=TITMMOV.CODCOLIGADA AND TMOV.IDMOV=TITMMOV.IDMOV)
Há alguma maneira de resolver isso ? Já tentei com isnull e com coalesce. Mesmo assim continuam trazendo valroes NULL
Chromusmaster
Curtidas 0
Melhor post
Alec Candia
22/11/2016
Chromumaster, tenta substituir o COALESCE por:
ISNULL([valor],0)
Fiz uma simulação aqui e funcionou.
ISNULL([valor],0)
Fiz uma simulação aqui e funcionou.
GOSTEI 1
Mais Respostas
Jones Granatyr
22/11/2016
Opa! Sempre usei o Coalesce e sempre funcionou. Você tentou rodar somente a parte SQL do coalesce, para certificar de que realmente está trazendo null?
GOSTEI 0
Chromusmaster
22/11/2016
Sim! Mesmo rodando apenas a parte do coalesce continua trazendo o valor null ao invés de trocar por 0
GOSTEI 0
Alec Candia
22/11/2016
Uma situação também que pode estar influenciando é o fato de estar sendo usado um SELECT dentro de outro SELECT.
Se houver falha, pode retornar NULL não exatamente o campo VALOR, mas o resultado da SUBCONSULTA.
Eu tentaria separar a QUERY em partes até achar o problema.
Se houver falha, pode retornar NULL não exatamente o campo VALOR, mas o resultado da SUBCONSULTA.
Eu tentaria separar a QUERY em partes até achar o problema.
GOSTEI 1
Chromusmaster
22/11/2016
Cara vou tentar fazer isso. Obrigado pela dica
GOSTEI 0
Chromusmaster
22/11/2016
Chromumaster, tenta substituir o COALESCE por:
ISNULL([valor],0)
Fiz uma simulação aqui e funcionou.
ISNULL([valor],0)
Fiz uma simulação aqui e funcionou.
Cara, resolveu meu problema. OBG
GOSTEI 0
Chromusmaster
22/11/2016
Para quem passar pelo mesmo problema tem uma solução "não muito bacana" mas que evita de fazer alguma conta com valor nulo
SELECT
ISNULL((SELECT isnull([VALOR],0) FROM TTRBMOV(nolock) WHERE CODTRB = 'IPI'
AND TTRBMOV.IDMOV=TMOV.IDMOV
AND TTRBMOV.NSEQITMMOV=TITMMOV.NSEQITMMOV),0)[IPI]
FROM TMOV(NOLOCK)
INNER JOIN TITMMOV (NOLOCK) ON (TMOV.CODCOLIGADA=TITMMOV.CODCOLIGADA AND TMOV.IDMOV=TITMMOV.IDMOV)
SELECT
ISNULL((SELECT isnull([VALOR],0) FROM TTRBMOV(nolock) WHERE CODTRB = 'IPI'
AND TTRBMOV.IDMOV=TMOV.IDMOV
AND TTRBMOV.NSEQITMMOV=TITMMOV.NSEQITMMOV),0)[IPI]
FROM TMOV(NOLOCK)
INNER JOIN TITMMOV (NOLOCK) ON (TMOV.CODCOLIGADA=TITMMOV.CODCOLIGADA AND TMOV.IDMOV=TITMMOV.IDMOV)
GOSTEI 0