Fórum Ajuda com a clausula distinct, comportamento estranho #57147

25/10/2006

0

Bom dia pessoal..
Estou tendo problemas na construção de uma query que utiliza o distinct..
A instrução em sql seria basicamente essa:
select caidat, cailan, caival, sum (distinct caival)
from caixa
group by caidat, cailan, caival


Qdo executo essa query no paradox.. tenho o seguinte resultado
      Data     Lan     Valor      Saldo
   01/11/2005    87    250,00    250,00
   01/11/2005    88    200,00    450,00
   01/11/2005    89    200,00    650,00
   01/11/2005    99    -435,00   215,00
   04/11/2005    91    300,00    515,00

Agora qdo executo a mesma qry em uma base Firebird tenho o seguinte resultado:
 
      Data      Lan     Valor      Saldo
   01/11/2005    87    250,00    250,00
   01/11/2005    88    200,00    200,00
   01/11/2005    89    200,00    200,00
   01/11/2005    99    -435,00   435,00
   04/11/2005    91    300,00    300,00


A clausula distinct tem comportamento diferente no firebird?
Qual seria a solução para por exemplo, mostrar um extrato de um caixa ?
Grato
Fausto


Faustoalves

Faustoalves

Responder

Posts

25/10/2006

Acacio

Cara, para ter dado está diferença as bases não podem estar iguais, já verificasse sem o distinct se os valores batem.


Responder

Gostei + 0

25/10/2006

Faustoalves

Amigo acho que vc não entendeu..
as bases são as mesmas.. observe que em uma ele soma o saldo linha a linha e na outra não..
Fausto


Responder

Gostei + 0

25/10/2006

Acacio

Bom não sei se entendi direito ainda, mas vamos la. Um problema que eu vi é se tais dando um sum no campo ´caival´ e queres mostrar ele antes. Ai tens que colocar no grupo by. Bom ai cada vez que mudar este valor ele vai quebrar, ou seja se tais dando um sum é inutil colocar o valor antes, pois deste modo eles sempre serão iguais. Outro problema é o distinct aonde está. O distinc vai funcionar para o select todo e não somente para aquele campo.
Simulei aqui numa base e os valores batem corretamente.


Responder

Gostei + 0

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

Aceitar