Fórum Sum, Group by e Campo Null #190764
26/10/2003
0
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
Curtir tópico
+ 0
Responder
Posts
26/10/2003
Bestschmidt
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?
Responder
Gostei + 0
26/10/2003
Agonzaga
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.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)