Ir para conteúdo
Fórum Script Brasil
  • 0

Consulta 2 tabelas, mas agrupa valor de apenas uma


wclive

Pergunta

Estou realizando a seguinte consulta

SELECT v.dtvenda, c.numnven, round(sum(c.quantid*c.prcompr),2) as COMPRAS, v.totalve as VENDAS from infvenda v
JOIN nvendas c on (v.dtvenda = c.dtvenda and v.numnven = c.numnven)
WHERE month(v.dtvenda) = '2' and c.sr_deleted=''
GROUP BY v.dtvenda

Obtenho o seguinte resultado da imagem enviada.

Porém no campo v.totalve, especificamente no dia 23 existem mais valores, mas não foram agrupados. Oque está havendo de errado ?

resultado.JPG

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Vamos analisar um pouco.

Primeiro modifique a cláusula where da forma

WHERE month(v.dtvenda) = '2' and c.sr_deleted=''

para 

WHERE v.dtvenda BETWEEN 2026-02-01 AND 2016-02-29 and c.sr_deleted=''

Vai evitar que sua consulta entre em TABLE SCAN.

Segundo, para efeito de teste, inclua o campo calculado qtRegistros, conforme abaixo:

SELECT v.dtvenda, c.numnven, round(sum(c.quantid*c.prcompr),2) as COMPRAS, v.totalve as VENDAS from infvenda v, 
COUNT(v.dtvenda) AS qtRegistros

Vai trazer a quantidade de registros somados para que você possa verificar se sua consulta está fazendo realmente o que você quer.

Compare os qtRegistros do dia 23 com o select abaixo:

SELECT v.dtvenda, c.numnven, round(c.quantid*c.prcompr,2) as COMPRAS, v.totalve as VENDAS 
from infvenda v
JOIN nvendas c on (v.dtvenda = c.dtvenda and v.numnven = c.numnven)
WHERE v.dtvenda = '2016-02-23' and c.sr_deleted=''

 

Link para o comentário
Compartilhar em outros sites

  • 0
3 horas atrás, Denis Courcy disse:

Vamos analisar um pouco.

Primeiro modifique a cláusula where da forma


WHERE month(v.dtvenda) = '2' and c.sr_deleted=''

para 


WHERE v.dtvenda BETWEEN 2026-02-01 AND 2016-02-29 and c.sr_deleted=''

Vai evitar que sua consulta entre em TABLE SCAN.

Segundo, para efeito de teste, inclua o campo calculado qtRegistros, conforme abaixo:


SELECT v.dtvenda, c.numnven, round(sum(c.quantid*c.prcompr),2) as COMPRAS, v.totalve as VENDAS from infvenda v, 
COUNT(v.dtvenda) AS qtRegistros

Vai trazer a quantidade de registros somados para que você possa verificar se sua consulta está fazendo realmente o que você quer.

Compare os qtRegistros do dia 23 com o select abaixo:


SELECT v.dtvenda, c.numnven, round(c.quantid*c.prcompr,2) as COMPRAS, v.totalve as VENDAS 
from infvenda v
JOIN nvendas c on (v.dtvenda = c.dtvenda and v.numnven = c.numnven)
WHERE v.dtvenda = '2016-02-23' and c.sr_deleted=''

 

 

Grato pela Informação.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...