Primeira e Ultima Data de Pedido do Cliente
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
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
Curtidas 0
Respostas
Thiago Irrazabal
10/07/2014
Boa tarde, já tentou usar Select From Select?
Aqui vai ele adaptado já:
Att,
Thiago Irrazabal de Oliveira.
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.
GOSTEI 0
Tomas Raponi
10/07/2014
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
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
GOSTEI 0
Thiago Irrazabal
10/07/2014
Ta usando FireBird? Qual?
Tenta assim:
Att,
Thiago Irrazabal de Oliveira.
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.
GOSTEI 0
Tomas Raponi
10/07/2014
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.
E o erro coninua o mesmo..parece que nao esta aceitando o que vem depois do ano, mes FROM (Select...
Ja tentei de tudo.
GOSTEI 0
Thiago Irrazabal
10/07/2014
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
Att,
Thiago Irrazabal de Oliveira
GOSTEI 0
Alex Lekao
10/07/2014
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.
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.
GOSTEI 0