Fórum Primeira e Ultima Data de Pedido do Cliente #485152

10/07/2014

0

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
Tomas Raponi

Tomas Raponi

Responder

Posts

11/07/2014

Thiago Irrazabal

Boa tarde, já tentou usar Select From Select?
Aqui vai ele adaptado já:
SELECT TTCLIENTES, MENOR, MAIOR, ANO, MES
FROM (SELECT DISTINCT(COUNT(CLIENTE)) AS TTCLIENTES, MIN(DTPEDIDO) AS MENOR, MAX(DTPEDIDO) AS MAIOR, EXTRACT(YEAR FROM DTPEDIDO) AS ANO, EXTRACT(MONTH FROM DTPEDIDO) AS MES FROM PEDIDOS GROUP BY 4,5)
WHERE CANCELADO = 'N'
AND VENDEDOR = :XVEND
AND EXTRACT(YEAR FROM MENOR) = :XANO
AND EXTRACT(YEAR FROM MAIOR) = :XANO
AND EXTRACT(MONTH FROM MENOR) = :XMES
AND EXTRACT(MONTH FROM MAIOR) = :XMES




Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

11/07/2014

Tomas Raponi

SELECT TTCLIENTES, MENOR, MAIOR, ANO, MES
FROM (SELECT DISTINCT(COUNT(CLIENTE)) AS TTCLIENTES,
MIN(DTPEDIDO) AS MENOR, MAX(DTPEDIDO) AS MAIOR,
EXTRACT(YEAR FROM DTPEDIDO) AS ANO, EXTRACT(MONTH FROM DTPEDIDO) AS MES FROM PEDIDOS GROUP BY 4,5)
WHERE CANCELADO = 'N'
AND VENDEDOR = :XVEND
AND EXTRACT(YEAR FROM MENOR) = :XANO
AND EXTRACT(YEAR FROM MAIOR) = :XANO
AND EXTRACT(MONTH FROM MENOR) = :XMES
AND EXTRACT(MONTH FROM MAIOR) = :XMES

Thiago, gostei da ideia, so que da erro na linha 2.
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 2, char 7.
SELECT.

Tentei ver o que poderia ser, mas nao consegui (firebird 1.5, so para lembrar). Grato
Responder

Gostei + 0

11/07/2014

Thiago Irrazabal

Ta usando FireBird? Qual?
Tenta assim:
SELECT TTCLIENTES, MENOR, MAIOR, ANO, MES
FROM (SELECT DISTINCT(COUNT(CLIENTE)) AS TTCLIENTES,
MIN(DTPEDIDO) AS MENOR, MAX(DTPEDIDO) AS MAIOR,
EXTRACT(YEAR FROM DTPEDIDO) AS ANO, EXTRACT(MONTH FROM DTPEDIDO) AS MES FROM PEDIDOS
WHERE CANCELADO = 'N' AND VENDEDOR = :XVEND
GROUP BY 4,5)
WHERE EXTRACT(YEAR FROM MENOR) = :XANO
AND EXTRACT(YEAR FROM MAIOR) = :XANO
AND EXTRACT(MONTH FROM MENOR) = :XMES
AND EXTRACT(MONTH FROM MAIOR) = :XMES




Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

12/07/2014

Tomas Raponi

Thiago, como disse acima e´ o Firebird 1.5.

E o erro coninua o mesmo..parece que nao esta aceitando o que vem depois do ano, mes FROM (Select...

Ja tentei de tudo.
Responder

Gostei + 0

12/07/2014

Thiago Irrazabal

Acho que só foi implantado isso no Firebird 2.0 ou superior :/, faz o seguinte cria uma view e faz um select nela, ou uma procedure com uma tabla temporária, abraço.



Att,
Thiago Irrazabal de Oliveira
Responder

Gostei + 0

17/07/2014

Alex Lekao

nao entendi muito bem.

somente a titulo de sugestao. rssr

nao daria certo utilizar o Between (acho que escrevi como escreve. kkkkk) e montar uma subselect para o primeiro e o ultimo(uma para cada um) usando top e top desc, se for necessario apresentar os dois?

No caso da diga do Thiago acredito que ajude tambem e muito.

talvez desenvolver algum tipo de procedure que saia montando tudo que vc precisa e agrupando e assim de o resultado esperado.

Espero ter ajudado.

Abraco.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar