Fórum Duvida Urgente Sql Firebird 1.5 #485184

11/07/2014

0

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

Tomas Raponi

Responder

Posts

11/07/2014

Joel Rodrigues

Não sei se entendi bem sua necessidade, mas teste o seguinte:
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.
Responder

Gostei + 0

11/07/2014

Tomas Raponi

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
Responder

Gostei + 0

13/07/2014

Thiago Irrazabal

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.
Responder

Gostei + 0

13/07/2014

Tomas Raponi

Caro Thiago.

Te agradeco muito a solucao apresentada.

Funcionou perfeitamente como eu precisava.

Abraco.

Tomas Raponi
Responder

Gostei + 0

14/07/2014

William

Finalizando o tópico!!!
Responder

Gostei + 0

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

Aceitar