[firebase-br] duvida em SELECT!

paulosxs Yahoo! paulosxs em yahoo.com.br
Sáb Maio 5 17:27:52 -03 2007


Alan Matos <alanladecasa em gmail.com> escreveu:
> Olá pessoal, to apanhando aki, então resolvi perguntar na lista pra ve 
> se alguem pode tentar me ajudar tenho uma tabela com os seguites 
> registros
>
> MOV   CLIENTE DATA        VALOR TIPO
> 00001 0000010 12/04/2007 120,00 C
> 00002 0000150 12/04/2007  20,00 C
> 00003 0000010 12/04/2007 100,00 C
> 00004 0000011 12/04/2007 120,00 C
> 00005 0000010 12/04/2007 120,00 C
> 00006 0000011 12/04/2007 120,00 C
> 00007 0000150 12/04/2007 120,00 C
>
> O que eu estou precisando é de um SELECT que me retorne o último 
> movimento e cada cliente. 

Bem, Alan... Primeiro temos que considerar que com, essa estrutura, é 
matematicamente impossível determinar o último MOV. O que o sistema pode 
fazer é "dar um chute". Para isso tenho duas sugestões:

1. Crie um campo para registrar a hora dentro de uma exatidão 
suficiente... em hh:mm, por exemplo. A query seria:

select
   C.CLIENTE,
   (select first 1 M.VALOR
      from Movimentos M
         where M.CLIENTE=C.CLIENTE
      order by M.DATA desc, M.HORA desc) "ULT.VALOR"
      from Clientes

2. Caso o campo para HORA não lhe seja conveniente, use o MOV:

select
   C.CLIENTE,
   (select first 1 M.VALOR
      from Movimentos M
         where M.CLIENTE=C.CLIENTE
      order by M.DATA desc, M.MOV desc) "ULT.VALOR"
      from Clientes


P.S. Para que você precisa do último valor?






Mais detalhes sobre a lista de discussão lista