Selecionar Menor e Maior data de Venda de Cliente (Select)
Ola, Pessoal , estou com o seguinte problema. Preciso pegar a primeira e ultima data dos pedidos dos clientes. So que preciso somente dos que tiveram o Primeiro e Ultimo Pedido no Mes/Ano Informado.
Exemplo: cliente teve o prim pedido em janeiro e o ultimo em fevereiro 2014..nao serve.
cliente teve o prim. pedido em junho e o ultimo em junho....este que preciso.
SELECT count(DISTINCT(CLIENTE)) AS TTCLIENTES,min(dtpedido) as menor,max(dtpedido) as maior FROM PEDIDOS
WHERE CANCELADO='N'
AND VENDEDOR = :XVEND
AND EXTRACT(YEAR FROM menor) =:XANO
AND EXTRACT(YEAR FROM menor) =:XANO
AND EXTRACT(MONTH FROM maior) =:XMES
AND EXTRACT(MONTH FROM maior) =:XMES
A Ideia e´ ter a QUANTIDADE DE CLIENTES desse vendedor que compraram pela primeira vez no mes.
Só que dessa forma da erro..coluna menor nao existe..
Grato pela ajuda
(obs) havia postado na tag Delphi.
Exemplo: cliente teve o prim pedido em janeiro e o ultimo em fevereiro 2014..nao serve.
cliente teve o prim. pedido em junho e o ultimo em junho....este que preciso.
SELECT count(DISTINCT(CLIENTE)) AS TTCLIENTES,min(dtpedido) as menor,max(dtpedido) as maior FROM PEDIDOS
WHERE CANCELADO='N'
AND VENDEDOR = :XVEND
AND EXTRACT(YEAR FROM menor) =:XANO
AND EXTRACT(YEAR FROM menor) =:XANO
AND EXTRACT(MONTH FROM maior) =:XMES
AND EXTRACT(MONTH FROM maior) =:XMES
A Ideia e´ ter a QUANTIDADE DE CLIENTES desse vendedor que compraram pela primeira vez no mes.
Só que dessa forma da erro..coluna menor nao existe..
Grato pela ajuda
(obs) havia postado na tag Delphi.
Tomas Raponi
Curtidas 0
Respostas
Fabiano Carvalho
11/07/2014
Não conheço muito bem o firebird, mas no sql server resolveria seguindo essas regras;
Criar uma tabela que contenha o maior e menor data, independente do mês.
Criava uma query a partir dessa tabela onde a diferença de meses entre a menor e menor data fosse igual a 0.
Criar uma tabela que contenha o maior e menor data, independente do mês.
Criava uma query a partir dessa tabela onde a diferença de meses entre a menor e menor data fosse igual a 0.
GOSTEI 0
Tomas Raponi
11/07/2014
Fabiano, como a Data do Pedido esta na tabela de vendas (pedidos), nao quero criar outra tabela,
Preciso pegar o primeiro e ultimo pedido do cliente (dtpedido),desde que ocorram no mesmo mes
joao 01/07/2014 15/07/2014
maria 03/07/2014 03/07/2014
Por que isso ? na verdade para saber quais os clientes que foram ativados no mes.
Nao posso criar tabela so para guardar as datas que ja tenho.
Grato
Preciso pegar o primeiro e ultimo pedido do cliente (dtpedido),desde que ocorram no mesmo mes
joao 01/07/2014 15/07/2014
maria 03/07/2014 03/07/2014
Por que isso ? na verdade para saber quais os clientes que foram ativados no mes.
Nao posso criar tabela so para guardar as datas que ja tenho.
Grato
GOSTEI 0
Fabiano Carvalho
11/07/2014
Tente algo assim
Não sei como funciona o datediff no firebird, fiz mais ou menos próximo.
select * from ( SELECT count(DISTINCT(CLIENTE)) AS TTCLIENTES,min(dtpedido) as menor,max(dtpedido) as maior FROM PEDIDOS WHERE CANCELADO='N' ) as Fonte where DATEDIFF(MONTH, menor, maior) = 0
Não sei como funciona o datediff no firebird, fiz mais ou menos próximo.
GOSTEI 0
Tomas Raponi
11/07/2014
Obrigado Fabiano, mas com Datediff nao funciona.
Grrato Pela atencao.
Grrato Pela atencao.
GOSTEI 0