Complexas consultas em Firebird podem ser resolvidas utilizando CTE.
CTE é uma construção que monta uma tabela de memória a ser utilizada em um SELECT e é desmontado quando
termina a execução do SELECT.
1) Considerando uma tabela de vendas (existente no banco de dados):
CREATE TABLE vendas (codigo varchar(20), data date, qtde numeric(18,4), valor numeric(18,4) );
2) Inserir alguns dados na tabela que simule as vendas;
3) Executar a seguinte consulta no banco de dados:
with VendasDoMes as ( -- agrupa os dados de vendas select Codigo, extract(month from data) Mes, extract(year from data) Ano, sum(qtde) Qtde, sum(valor) Total from vendas group by 1,2,3 -- agrupa as colunas ) select * from VendasDoMes --monta a consulta where ano=2015 and mes=12 order by mes, ano
4) Conclusão:
O SELECT irá retornar a quantidade e total de vendas de todos os produto no mês de Dezembro de 2015.
Thank you a lot for sharing this. Awsome!