none
Selecionar datas específicas RRS feed

  • 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!

    sexta-feira, 6 de junho de 2014 14:57

Respostas

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

    sexta-feira, 6 de junho de 2014 17:05
  • 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!

    segunda-feira, 9 de junho de 2014 11:26
  • 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

    segunda-feira, 9 de junho de 2014 12:37