Sum, Group by e Campo Null
Na Select abaixo se um registro do grupo estiver com um campo null o grupo nao e considerado.
Ex. Tenho varios grupos. Em um deles apenas um registro tem a data null
e o grupo todo nao e considerado. O que fazer para apenas este registro nao entrar?
Procedure .....
wIni := dtInicio.DateTime;
wFim := dtFim.DateTime;
With dmBDados.quGResPgCons do
Begin
Close;
SQL.Clear;
SQL.ADD(´SELECT SSSPCODCONS, SUM(SSSPVALSERV - SSSPIRF- SSSPISS)´);
SQL.ADD(´FROM SSSERVPREST´);
SQL.ADD(´GROUP BY SSSPCODCONS´);
SQL.ADD(´ HAVING SSSPDATAPAGTO BETWEEN :wDatIni and :wDatFim´);
ParamByName(´wDatIni´).value := wIni;
ParamByName(´wDatFim´).value := wFim;
Prepare;
Open;
frmGResPgCons := TFrmGResPgCons.Create(application);
try
frmGResPgCons.ShowModal;
finally
frmGResPgCons.Release;
frmGResPgCons := nil;
end;
end;
end;
Ex. Tenho varios grupos. Em um deles apenas um registro tem a data null
e o grupo todo nao e considerado. O que fazer para apenas este registro nao entrar?
Procedure .....
wIni := dtInicio.DateTime;
wFim := dtFim.DateTime;
With dmBDados.quGResPgCons do
Begin
Close;
SQL.Clear;
SQL.ADD(´SELECT SSSPCODCONS, SUM(SSSPVALSERV - SSSPIRF- SSSPISS)´);
SQL.ADD(´FROM SSSERVPREST´);
SQL.ADD(´GROUP BY SSSPCODCONS´);
SQL.ADD(´ HAVING SSSPDATAPAGTO BETWEEN :wDatIni and :wDatFim´);
ParamByName(´wDatIni´).value := wIni;
ParamByName(´wDatFim´).value := wFim;
Prepare;
Open;
frmGResPgCons := TFrmGResPgCons.Create(application);
try
frmGResPgCons.ShowModal;
finally
frmGResPgCons.Release;
frmGResPgCons := nil;
end;
end;
end;
Agonzaga
Curtidas 0
Respostas
Bestschmidt
26/10/2003
Na minha opinião, acho que o sql seria melhor assim:
SELECT SSSPCODCONS, SUM(SSSPVALSERV - SSSPIRF- SSSPISS)
FROM SSSERVPREST
WHERE SSSPDATAPAGTO BETWEEN :wDatIni and :wDatFim
GROUP BY SSSPCODCONS
Dessa maneira, o sql vai desconsiderar apenas o registro que tem a data nula.
Falou?
SELECT SSSPCODCONS, SUM(SSSPVALSERV - SSSPIRF- SSSPISS)
FROM SSSERVPREST
WHERE SSSPDATAPAGTO BETWEEN :wDatIni and :wDatFim
GROUP BY SSSPCODCONS
Dessa maneira, o sql vai desconsiderar apenas o registro que tem a data nula.
Falou?
GOSTEI 0
Agonzaga
26/10/2003
Valeu Bestschmidt, deu certo.
O interessante é que li em uma apostila que quando se usa GROUP BY deve ser usando HAVING e nao WHERE, e sempre depois do Group by.
O interessante é que li em uma apostila que quando se usa GROUP BY deve ser usando HAVING e nao WHERE, e sempre depois do Group by.
GOSTEI 0