Duvida Urgente Sql Firebird 1.5
Pessoal, preciso saber se a Menor Data e a Maior data estao no mesmo MES/ANO
select distinct(cliente),min(dtpedido) as menor ,max(dtpedido) as maior,VENDEDOR,
(select EXTRACT(YEAR FROM menor) = :XANO
AND EXTRACT(MONTH FROM menor) =:XMES
and EXTRACT(YEAR FROM maior) =:XANO
AND EXTRACT(MONTH FROM maior) =:XMES ) from pedidos)
WHERE VENDEDOR = :XVEND
ou seja, preciso que tanto a menor como a maior data selecionada estejam no mesmo mes, ano.
tento executar mais da diversos erros, entre eles erro onde tem o =.
Trabalho com delphi 7, firebird 1.5
Agradeco muito a ajuda
select distinct(cliente),min(dtpedido) as menor ,max(dtpedido) as maior,VENDEDOR,
(select EXTRACT(YEAR FROM menor) = :XANO
AND EXTRACT(MONTH FROM menor) =:XMES
and EXTRACT(YEAR FROM maior) =:XANO
AND EXTRACT(MONTH FROM maior) =:XMES ) from pedidos)
WHERE VENDEDOR = :XVEND
ou seja, preciso que tanto a menor como a maior data selecionada estejam no mesmo mes, ano.
tento executar mais da diversos erros, entre eles erro onde tem o =.
Trabalho com delphi 7, firebird 1.5
Agradeco muito a ajuda
Tomas Raponi
Curtidas 0
Respostas
Joel Rodrigues
11/07/2014
Não sei se entendi bem sua necessidade, mas teste o seguinte:
Obs.: fiz em um editor de texto simples, então pode conter erros de sintaxe.
SELECT DISTINCT(CLIENTE) AS CLIENTE, MIN(DTPEDIDO) AS MENOR, MAX(DTPEDIDO) AS MAIOR, VENDEDOR, WHERE EXTRACT(YEAR FROM MIN(DTPEDIDO)) = EXTRACT(YEAR FROM MAX(DTPEDIDO)) AND EXTRACT(MONTH FROM MIN(DTPEDIDO)) = EXTRACT(MONTH FROM MAX(DTPEDIDO)) AND EXTRACT(YEAR FROM MIN(DTPEDIDO)) = :XANO AND EXTRACT(MONTH FROM MIN(DTPEDIDO)) = :XMES AND VENDEDOR = :XVEND
Obs.: fiz em um editor de texto simples, então pode conter erros de sintaxe.
GOSTEI 0
Tomas Raponi
11/07/2014
SELECT
COUNT(DISTINCT(CLIENTE)) AS CLIENTE, MIN(DTPEDIDO) AS MENOR, MAX(DTPEDIDO) AS MAIOR, VENDEDOR FROM PEDIDOS
WHERE
EXTRACT(YEAR FROM MIN(DTPEDIDO)) = EXTRACT(YEAR FROM MAX(DTPEDIDO))
AND
EXTRACT(MONTH FROM MIN(DTPEDIDO)) = EXTRACT(MONTH FROM MAX(DTPEDIDO))
AND
EXTRACT(YEAR FROM MIN(DTPEDIDO)) = :XANO
AND
EXTRACT(MONTH FROM MIN(DTPEDIDO)) = :XMES
AND
VENDEDOR = :XVEND
Joel, da erro
Cannot use an agregate function in a where Clause, use having instead
obs..coloqueio o count e from pedidos, mas a ideia penso que seria essa mesmo
COUNT(DISTINCT(CLIENTE)) AS CLIENTE, MIN(DTPEDIDO) AS MENOR, MAX(DTPEDIDO) AS MAIOR, VENDEDOR FROM PEDIDOS
WHERE
EXTRACT(YEAR FROM MIN(DTPEDIDO)) = EXTRACT(YEAR FROM MAX(DTPEDIDO))
AND
EXTRACT(MONTH FROM MIN(DTPEDIDO)) = EXTRACT(MONTH FROM MAX(DTPEDIDO))
AND
EXTRACT(YEAR FROM MIN(DTPEDIDO)) = :XANO
AND
EXTRACT(MONTH FROM MIN(DTPEDIDO)) = :XMES
AND
VENDEDOR = :XVEND
Joel, da erro
Cannot use an agregate function in a where Clause, use having instead
obs..coloqueio o count e from pedidos, mas a ideia penso que seria essa mesmo
GOSTEI 0
Thiago Irrazabal
11/07/2014
SELECT DISTINCT(CLIENTE) AS CLIENTE, MIN(DTPEDIDO) AS MENOR, MAX(DTPEDIDO) AS MAIOR, VENDEDOR FROM PEDIDOS GROUP BY 1,4 HAVING EXTRACT(YEAR FROM MIN(DTPEDIDO)) = EXTRACT(YEAR FROM MAX(DTPEDIDO)) AND EXTRACT(MONTH FROM MIN(DTPEDIDO)) = EXTRACT(MONTH FROM MAX(DTPEDIDO)) AND EXTRACT(YEAR FROM MIN(DTPEDIDO)) = :XANO AND EXTRACT(MONTH FROM MIN(DTPEDIDO)) = :XMES AND VENDEDOR = :XVEND
Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
Tomas Raponi
11/07/2014
Caro Thiago.
Te agradeco muito a solucao apresentada.
Funcionou perfeitamente como eu precisava.
Abraco.
Tomas Raponi
Te agradeco muito a solucao apresentada.
Funcionou perfeitamente como eu precisava.
Abraco.
Tomas Raponi
GOSTEI 0
William
11/07/2014
Finalizando o tópico!!!
GOSTEI 0