Usuário com melhor resposta
Retorno de consulta Divergente

Pergunta
-
Estou realizando a seguinte consulta:
select distinct ven.cod_pessoa, pes.nome_pessoa, ptel.numero,
(Select top 1 vend.data from tab_venda vend where vend.cod_pessoa = ven.cod_pessoa order by vend.data desc) as Data_Venda
from tab_venda ven
INNER join tab_pessoa pes on
pes.cod_pessoa = ven.cod_pessoa
INNER JOIN dbo.TAB_VENDEDORESGRUPO gvend ON
gvend.COD_VENDEDOR = ven.cod_vendedor
INNER JOIN dbo.TAB_TELEFONE ptel ON
ptel.COD_PESSOA = pes.COD_PESSOA
where (
gvend.COD_GRUPO = 171)
and tipo_venda <> 'x'
and ven.DATA BETWEEN '20140501' AND '20140531'
AND NUMERO <> ''
order by Data_Venda ASCSó que o retorno não esta vindo somente as vendas no mês de maio, vem também algumas vendas do mês de junho e julho, mas somente algumas. Porque?
Respostas
-
Bom dia,
Laísa, acredito que o problema está na coluna Data_Venda, pois a subquery utilizada para obter a data não tem a condição para filtrar por periodo, nem as demais condições da query principal.
Experimente fazer um teste dessa forma para ver se é obtido o resultado desejado:
select ven.cod_pessoa, pes.nome_pessoa, ptel.numero, max(ven.data) as Data_Venda from tab_venda ven INNER JOIN dbo.TAB_VENDEDORESGRUPO gvend ON gvend.COD_VENDEDOR = ven.cod_vendedor INNER join tab_pessoa pes ON pes.cod_pessoa = ven.cod_pessoa INNER JOIN dbo.TAB_TELEFONE ptel ON ptel.COD_PESSOA = pes.COD_PESSOA where gvend.COD_GRUPO = 171 and tipo_venda <> 'x' and ven.DATA BETWEEN '20140501' AND '20140531' AND NUMERO <> '' group by ven.cod_pessoa, pes.nome_pessoa, ptel.numero order by Data_Venda ASC
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Durval RamosModerator quinta-feira, 31 de julho de 2014 14:35
- Marcado como Resposta Laísa.fcardoso quinta-feira, 31 de julho de 2014 14:56
Todas as Respostas
-
Bom dia,
Laísa, acredito que o problema está na coluna Data_Venda, pois a subquery utilizada para obter a data não tem a condição para filtrar por periodo, nem as demais condições da query principal.
Experimente fazer um teste dessa forma para ver se é obtido o resultado desejado:
select ven.cod_pessoa, pes.nome_pessoa, ptel.numero, max(ven.data) as Data_Venda from tab_venda ven INNER JOIN dbo.TAB_VENDEDORESGRUPO gvend ON gvend.COD_VENDEDOR = ven.cod_vendedor INNER join tab_pessoa pes ON pes.cod_pessoa = ven.cod_pessoa INNER JOIN dbo.TAB_TELEFONE ptel ON ptel.COD_PESSOA = pes.COD_PESSOA where gvend.COD_GRUPO = 171 and tipo_venda <> 'x' and ven.DATA BETWEEN '20140501' AND '20140531' AND NUMERO <> '' group by ven.cod_pessoa, pes.nome_pessoa, ptel.numero order by Data_Venda ASC
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Durval RamosModerator quinta-feira, 31 de julho de 2014 14:35
- Marcado como Resposta Laísa.fcardoso quinta-feira, 31 de julho de 2014 14:56
-