Re: [firebase-br] Fw: Sql Consulta muito Difícil (iniciante)
Everton Garcia
ertgarcia.listas em gmail.com
Dom Out 23 13:40:22 -03 2005
Carlos Eduardo,
Acho que a Stored Procedure abaixo, resolve seu problema. Basta passar
o ano como parâmetro e ele te dá o resumo do ano.
/***********************************************************************************
** Início
***********************************************************************************/
SET TERM ^ ;
CREATE PROCEDURE SP_RELATORIO_CONHECIMENTO (
ANO INTEGER)
RETURNS (
CONHECIMENTO VARCHAR(50),
JANEIRO INTEGER,
FEVEREIRO INTEGER,
MARCO INTEGER,
ABRIL INTEGER,
MAIO INTEGER,
JUNHO INTEGER,
JULHO INTEGER,
AGOSTO INTEGER,
SETEMBRO INTEGER,
OUTUBRO INTEGER,
NOVEMBRO INTEGER,
DEZEMBRO INTEGER,
TOTAL INTEGER)
AS
DECLARE VARIABLE NCOUNT INTEGER;
DECLARE VARIABLE SOMA INTEGER;
begin
for select distinct cli.conheceu
from clientes cli
into :conhecimento
do begin
ncount = 1;
total = 0;
while (ncount <=12) do
begin
select count(cm.ncom)
from comanda cm
inner join clientes cl
on(cm.codcli = cl.codcli)
and(cl.conheceu = :conhecimento)
where extract(month from cm.data) = :ncount
and extract(year from cm.data) = :ano
into :soma;
if (:ncount = 1) then
janeiro = :soma;
else if (:ncount = 2) then
fevereiro = :soma;
else if (:ncount = 3) then
marco = :soma;
else if (:ncount = 4) then
abril = :soma;
else if (:ncount = 5) then
maio = :soma;
else if (:ncount = 6) then
junho = :soma;
else if (:ncount = 7) then
julho = :soma;
else if (:ncount = 8) then
agosto = :soma;
else if (:ncount = 9) then
setembro = :soma;
else if (:ncount = 10) then
outubro = :soma;
else if (:ncount = 11) then
novembro = :soma;
else if (:ncount = 12) then
dezembro = :soma;
total = :total + :soma;
ncount = :ncount + 1;
end
suspend;
end
end
^
SET TERM ; ^
/***********************************************************************************
** Fim
***********************************************************************************/
[]´s
Everton Garcia
Mais detalhes sobre a lista de discussão lista