Array
(
)

if...

Gabriela Miglioli
   - 27 mar 2008

Boa tarde, preciso de um relatório que me saia o número de serviços ´individuais´, ou seja, até 10, e ´grupo´, acima de 10, que cada cliente usou.
Decidi fazer uma Porcedure, porém ela está me retornando:

Cliente Qtde_Ind Vl_Ind Qntde_Gru Vl_Gru IDServ
1 1 500 0 0 1
1 2 1100 0 0 1
1 2 1100 1 860,00 1

O que eu preciso que apareça:
Cliente Qtde_Ind Vl_Ind Qntde_Gru Vl_Gru IDServ
1 2 1100 1 860,00 1

A minha linha é:

begin
quantgrupo = 0;
valorgrupo = 0;
quantindiv = 0;
valorindiv = 0;

for select oi.cc_qtdven, oi.cc_valor, c.cc_idclifor, c.cc_nome, s.cc_cod, s.cc_desc,
o.cc_idorc, oi.cc_idservico
from orc o
join orc_itens oi on o.cc_idorc=oi.cc_idorc
join clifor c on c.cc_idclifor=o.cc_idclifor
join servicos s on s.cc_idservicos=oi.cc_idservico
LEFT JOIN CAMBIO cam ON oi.CC_DATA = cam.CC_DIA AND oi.CC_MOEDA=cam.CC_MOEDA
where (oi.cc_data between :datai and :dataf)
and (c.cc_idclifor between :idclii and :idclif)
and (c.cc_nome between :nomeclii and :nomeclif)
order by o.cc_idclifor, oi.cc_idservico
into :nquant, :nvalor, :idcliente, :nomecliente, :codservico, :descservico, :nIdOrc, :nidservico
do
begin
if (:nquant>10) then --Grupo
begin
quantgrupo = :quantgrupo+1;
valorgrupo = :valorgrupo+nvalor;
end
else
begin
quantindiv = :quantindiv+1;
valorindiv = :valorindiv+nvalor;
end
suspend;
end

end

Grata desde já.
Gabriela.