Fórum Query com fazer ? #236664

08/06/2004

0

Tenho uma tabela em paradox

coditem tipo(Debito ou credito) e valor

inicialmente queria somar todos os debitos e todos os creditos mas não consegui agora quero filtrar somente os Creditos e somar !
como eu faço isto ?
pois desta forma vou fazer duas query uma para credito e outra para Debito e achar o saldo ?

estou tentando isto mas esta dando erro : when group by exists, every simple field in projectors must be in group by

 Qryvendacl.Close;

     with Qryvendacl do
          begin
          sql.clear;
          Sql.Add(´select movfinanceiro.*,sum(movfinanceiro.valor) as saldoc,empresa.razaosoc, planocnt.coditem, planocnt.descconta´);
          sql.add(´from empresa, movfinanceiro , planocnt´);
          Sql.Add(´WHERE (movfinanceiro.coditem = planocnt.coditem)´);
          sql.add(´and movfinanceiro.tipo =:C´);
          if (edtdatainic.Text <>´  /  /    ´)and (edtdatafin.text <>´  /  /    ´)then
             begin
                 sql.add(´and datamov >= :datainicial and datamov <= :datafinal´);
                 try
                    Params [0].asdate := strtodate (edtdatainic.text);
                    Params [1].asdate := strtodate (edtdatafin.text);
                 except
                     on econverterror do
                     begin
                     beep;
                     Showmessage (´Data Inválida´);
                     edtdatainic.setfocus;
                     exit;
                     end;
                 end;
             end;
         sql.add(´GROUP BY descconta´);
         sql.add(´ORDER BY datamov´);
          end;


[b:a119dfbf45][color=red:a119dfbf45]BBCode inserido pelo Moderador (AZ)[/color:a119dfbf45][/b:a119dfbf45]


Hugofab

Hugofab

Responder

Posts

08/06/2004

Paulo_amorim

Olá

Quando você tem um GROUP BY, o campo que vc mostrar tem que estar no GROUP BY (exceto com SUM, ,MAX, etc...)...assim, vc não pode exibir tudo assim
o que vc pode fazer eh
SELECT * FROM ( select sum(valor) ... )

pois vc diz que seu select inicial agora eh como se fosse uma tabela pra ele...ai sim vc pode mostrar todos os campos...

Dica: se a duvida eh SQL, não poste o codigo do Delphi junto, pois atrapalha o entendimento

Espero que ajude
Até+


Responder

Gostei + 0

08/06/2004

Zunker

Naum deu bem pra entender o que vc quer.

De uma arrumada nesse codigo, pois esta uma zona, dificil de se entender.


Responder

Gostei + 0

08/06/2004

Hugofab

select movfinanceiro.*,empresa.razaosoc, planocnt.coditem, planocnt.descconta

from empresa, movfinanceiro , planocnt´);

WHERE movfinanceiro.coditem = planocnt.coditem and movfinanceiro.tipo = ´C´

ORDER BY datamov

eu gostaria de criar um query para gerar dois campos de saldo um de credito e outro de debito
minha tabela

codigo tipo valor


onde o tipo é ´C´ credito ou ´D´ debito
só isto mas não estou conseguindo implementar isto !!

obrigado


Responder

Gostei + 0

08/06/2004

Paulo_amorim

Olá

tente assim

SELECT descconta, SUM(valor) FROM movfinanceiro
WHERE tipo = ´C´
GROUP BY descconta

para fazer uma query que mostre ambos, tente o codigo acima, mais:
UNION
SELECT descconta, SUM(valor) FROM movfinanceiro
WHERE tipo = ´D´
GROUP BY descconta

Espero que ajude
Até+


Responder

Gostei + 0

09/06/2004

Hugofab

mudei minha estrutura da tabela mas valeu cara ninguem tinha me passado isto antes, vou tentar aqui se ficar bom volto para o que era antes.

T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar