Fórum Duvida com Sql #190330

23/10/2003

0

Olá amigos

Estou usando o ib e tenho uma tabela onde armazenarei as vendas nos seguintes campos: cod, cliente, produto, quantidade, valor, data. A minha duvida é a seguinte, preciso gerar um relatório de produtos vendidos mensal, ou seja, quantidade vendida do produto nos últimos 12 meses e este relatorio vai pegar todos os produtos da tabela colocando as quantidades totais nas colunas meses. Estou utilizando extract do ib para filtrar por mes, mas preciso dos ultimos 12 meses e não apenas do mes atual.

Obrigado desde já
Sanses


Sanses

Sanses

Responder

Posts

23/10/2003

Nando

Amigo, não sei se o q vou t dizer é a melhor solução, mas foi a que pensei agora.

Ao invés de utilizar o extract, faça o SQL buscar somente entre o dia 1 de 12 meses anteriores.
faça algo assim: variavel := formatdatetime(´01/MM/yyyy´, incmonth(date, -12));

sua variavel já está com o primeiro dia de doze meses atrás.

agora pegue uma função que tem aki no clube delphi que retorna o último dia do mês, dai você aplica esta função em uma segunda variável e vc terá as datas para fazer a consulta:

SELECT
.
.
.
WHERE SEU_CAMPO >= VARIAVEL1 AND SEU_CAMPO <= VARIAVEL2

isso deve funcionar!

Outra opção é tentar fazer o extract e subtrair 12 pois o retorno do extract é um integer. Mas isso eu não sei se funciona direito, nunca testei.

Qualquer dúvida me fala!


Responder

Gostei + 0

23/10/2003

Thematrix:reloaded

Ateh onde eu saiba, e ja passei por isso, vc nao tem como no SQL criar um cursor com soma de 12 meses individualizadas.
O caminho mais facil e vc montar uma tabela temporaria no seu Banco de Dados com uma estrutura +/- assim:

CodProduto
Mes1
Mes2
Mes3
...
Mes12

E ai, antes do relatorio vc faz um processo para gravar os totais nesta tabela, por exemplo:

BtnProcesso.Click

With IBQProdutos do
begin
First;
While not EoF do
begn
For i := 1 To 12 do
begin
<< SQL para somar >>
end;
<<Gravar na Tabela >>
Next
end;
end;

e finalmente vc cria o relatorio a partir desta tabela, Ok


Responder

Gostei + 0

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

Aceitar