1
resposta

VALORES DA SUBTRAÇÃO RETORNANDO INCORRETO

Ola, fiz tudo bem parecido com o video, o que estou achando estranho é que na hora da subtração o resultado esta vindo negativo e altera a resolução do WHEN

SELECT X.NOME, X.MES_ANO, X.QUANTIDADE_MENSAL, X.LIMITE_DE_CREDITO,(X.QUANTIDADE_MENSAL - X.LIMITE_DE_CREDITO) as DIFERENCA,
CASE WHEN (X.QUANTIDADE_MENSAL - X.LIMITE_DE_CREDITO) < 0 THEN 'INVALIDA'
ELSE 'VALIDA' END AS STATUS_VENDA
FROM( SELECT NOME, DATE_FORMAT(NF.DATA_VENDA, '%Y-%m') as MES_ANO, SUM(QUANTIDADE) AS QUANTIDADE_MENSAL, MAX(VOLUME_DE_COMPRA) AS LIMITE_DE_CREDITO
  FROM tabela_de_clientes TC
    JOIN notas_fiscais NF
    ON TC.CPF = NF.CPF
    JOIN itens_notas_fiscais INF
    ON NF.NUMERO = INF.NUMERO
    group by NOME ,DATE_FORMAT(NF.DATA_VENDA, '%Y-%m')) X;

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá Caio, tudo bem?

A diferença da sua query, para a query apresentada pelo instrutor durante o vídeo, é a ordem dos campos na subtração.

Você está realizando a subtração como (X.QUANTIDADE_MENSAL - X.LIMITE_DE_CREDITO), ao invés de realizar a subtração como (X.LIMITE_DE_CREDITO - X.QUANTIDADE_MENSAL)

  • A sua query completa:
SELECT X.NOME, X.MES_ANO, X.QUANTIDADE_MENSAL, X.LIMITE_DE_CREDITO,(X.LIMITE_DE_CREDITO - X.QUANTIDADE_MENSAL ) as DIFERENCA,
CASE WHEN (X.LIMITE_DE_CREDITO - X.QUANTIDADE_MENSAL) < 0 THEN 'INVALIDA'
ELSE 'VALIDA' END AS STATUS_VENDA
FROM( SELECT NOME, DATE_FORMAT(NF.DATA_VENDA, '%Y-%m') as MES_ANO, 
SUM(QUANTIDADE) AS QUANTIDADE_MENSAL, MAX(VOLUME_DE_COMPRA) AS LIMITE_DE_CREDITO
  FROM tabela_de_clientes TC
    JOIN notas_fiscais NF
    ON TC.CPF = NF.CPF
    JOIN itens_notas_fiscais INF
    ON NF.NUMERO = INF.NUMERO
    group by NOME ,DATE_FORMAT(NF.DATA_VENDA, '%Y-%m')) X;

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!