Usuário com melhor resposta
Selecionar datas específicas

Pergunta
-
Olá galera, gostaria de uma ajudinha, tenho as seguintes tabelas:
Tabela Nome da Tabela Campos da Tabela
Clientes PN CodePN, NamePN
Vendas Sales SaleDate
Preciso fazer uma consulta que me retorne apenas os clientes "inativos"(Considerando como inativos os clientes que não compram a 4 meses)
Como devo proceder? Obrigado!
Respostas
-
Boa tarde,
Experimente mais ou menos dessa forma:
select c.IdCliente, c.Nome from Clientes as c inner join Vendas as v on v.IdCliente = c.IdCliente group by c.IdCliente, c.Nome having max(v.DataVenda) <= DATEADD(MONTH, -4, GETDATE())
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Diego Murakami sexta-feira, 6 de junho de 2014 17:13
- Marcado como Resposta Ricardo Barbosa Cortes sexta-feira, 6 de junho de 2014 18:34
Todas as Respostas
-
Boa tarde,
Experimente mais ou menos dessa forma:
select c.IdCliente, c.Nome from Clientes as c inner join Vendas as v on v.IdCliente = c.IdCliente group by c.IdCliente, c.Nome having max(v.DataVenda) <= DATEADD(MONTH, -4, GETDATE())
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Diego Murakami sexta-feira, 6 de junho de 2014 17:13
- Marcado como Resposta Ricardo Barbosa Cortes sexta-feira, 6 de junho de 2014 18:34
-
Bom dia,
Infelizmente, ainda retorna clientes ativos, ou seja, aqueles que compraram recentemente, meu código está assim:
SELECT T0.[CardCode], T0.[CardName], T1.[DocDate]
FROM OCRD T0 INNER JOIN OINV T1 ON T0.CardCode = T1.CardCode
GROUP BY T0.[CardCode], T0.[CardName], T1.[DocDate]
HAVING MAX(T1.DocDate)<=DATEADD(MONTH, -4, GETDATE())
Onde: OCRD/T0 = Tabela de clientes, OINV/T1 = Tabela de vendas
se puder me ajudar, mais uma vez agradeço!
-
Bom dia,
Acredito que o problema está no agrupamento, pela forma como a coluna DocDate foi adicionada na query.
Experimente dessa forma:
SELECT T0.[CardCode], T0.[CardName], MAX(T1.[DocDate]) as DocDate FROM OCRD T0 INNER JOIN OINV T1 ON T0.CardCode = T1.CardCode GROUP BY T0.[CardCode], T0.[CardName] HAVING MAX(T1.DocDate) <= DATEADD(MONTH, -4, GETDATE())
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br