1
resposta

MELHORADO A QUERY

Boa tarde min surgiu uma ideia depois de construir o relatório de vendas invalidas de saber os nomes dos vendedores que fizeram essa venda e eu estou quebrando a cabeça aqui para implementar isso na query , eu consegue fazer porém ele só esta min mostrando somente um nome Márcio Almeida Silva e outros vendedores não mostra como se estivesse fazendo um produto cartesiano . Voçês podem min ajudar fazendo favor para sabe onde eu estou errado??

SELECT X.CPF, X.CLIENTE, X. MES_ANO, X.COMPROU, X.QUANTIDADE_LIMITE, CASE WHEN X.QUANTIDADE_LIMITE - X.COMPROU < 0 THEN ' VENDA INVALIDA' ELSE ' VALIDO' END AS STATUS_VENDA, X.MATRICULA_VENDEDOR, X.VENDEDOR FROM (SELECT NF.CPF, C.NOME AS CLIENTE, DATE_FORMAT(NF.DATA_VENDA,'%Y/%m') AS MES_ANO , SUM(INF.QUANTIDADE) AS COMPROU, MIN(C.VOLUME_DE_COMPRA) AS QUANTIDADE_LIMITE, NF.MATRICULA AS MATRICULA_VENDEDOR, VD.NOME AS VENDEDOR FROM NOTAS_FISCAIS NF INNER JOIN ITENS_NOTAS_FISCAIS INF ON NF.NUMERO = INF.NUMERO INNER JOIN TABELA_DE_CLIENTES C ON C.CPF = NF.CPF INNER JOIN tabela_de_vendedores VD ON VD.MATRICULA = NF.MATRICULA GROUP BY NF.CPF, DATE_FORMAT(NF.DATA_VENDA,'%Y/%m')) X

1 resposta

Olá Edson!

Executei essa consulta que você colocou na pergunta e na primeira execução percebi que realmente estava aparecendo no campo VENDEDOR apenas o "Márcio Almeida Silva" (em todas as linhas), porém pouco depois eu só fiz a identação da sua consulta, e adicionei os parenteses na condição do CASE, e executei novamente e consegui o resultado esperado, o código foi esse:

SELECT X.CPF, X.CLIENTE, X. MES_ANO, X.COMPROU, X.QUANTIDADE_LIMITE, 
CASE 
    WHEN (X.QUANTIDADE_LIMITE - X.COMPROU) < 0 THEN ' VENDA INVALIDA' 
    ELSE ' VALIDO' 
END AS STATUS_VENDA, X.MATRICULA_VENDEDOR, X.VENDEDOR 
FROM (SELECT NF.CPF, C.NOME AS CLIENTE, DATE_FORMAT(NF.DATA_VENDA,'%Y/%m') AS MES_ANO, 
SUM(INF.QUANTIDADE) AS COMPROU, MIN(C.VOLUME_DE_COMPRA) AS QUANTIDADE_LIMITE, 
NF.MATRICULA AS MATRICULA_VENDEDOR, VD.NOME AS VENDEDOR 
FROM NOTAS_FISCAIS NF INNER JOIN ITENS_NOTAS_FISCAIS INF 
ON NF.NUMERO = INF.NUMERO 
INNER JOIN TABELA_DE_CLIENTES C 
ON C.CPF = NF.CPF 
INNER JOIN tabela_de_vendedores VD 
ON VD.MATRICULA = NF.MATRICULA 
GROUP BY NF.CPF, DATE_FORMAT(NF.DATA_VENDA,'%Y/%m')) X

Tenta dessa forma pra ver se funciona do jeito que você está querendo!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software