Exibir apenas ultimo registro

Firebird

15/02/2007

Amigos, tenho uma consulta que quero que me retorne apenas a ultima data de acesso

Ex: SELECT CLIENTE, LOCAL, DATA FROM CLIENTE
INNER JOIN HISTORICO ON (CODCLIENTE=HCODCLIENTE)

Hoje vem assim

EDUARDO DA SILVA AÇOUGUE 01/01/2007 EDUARDO DA MESQUITA CANTINA 31/02/2007 EDUARDO DA SILVA CANTINA 01/02/2007


Quero este retorno


EDUARDO DA MESQUITA CANTINA 31/02/2007 EDUARDO DA SILVA CANTINA 01/02/2007


isto e o maior pela data


Sremulador

Sremulador

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

15/02/2007

algo assim:

SELECT CLIENTE, LOCAL, DATA FROM CLIENTE
INNER JOIN HISTORICO ON (CODCLIENTE=HCODCLIENTE)
where data = (select max(data) from historico h1 where h1.HCODCLIENTE = cliente.codcliente)

se é que a data está na tabela histórico...


GOSTEI 0
Sremulador

Sremulador

15/02/2007

Amigo emerson ae e que mora o problema

se é que a data está na tabela histórico...


a data esta na tabela cliente


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

15/02/2007

e isso não dá certo?

SELECT CLIENTE, LOCAL, DATA FROM CLIENTE
INNER JOIN HISTORICO ON (CODCLIENTE=HCODCLIENTE)
where data = (select max(data) from cliente c1 where c1.CODCLIENTE = cliente.codcliente)


GOSTEI 0
Sremulador

Sremulador

15/02/2007

e isso não dá certo? 


SELECT CLIENTE, LOCAL, DATA FROM CLIENTE 
INNER JOIN HISTORICO ON (CODCLIENTE=HCODCLIENTE) 
where data = (select max(data) from cliente c1 where c1.CODCLIENTE = cliente.codcliente)


não da, pq
select max(data) from cliente c1 where c1.CODCLIENTE = cliente.codcliente)
pode ter várias datas e Data do cliente e uma só, mesmo se eu agrupar não daria certo tb pois LOCAL e diferente em vários casos

:cry:


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

15/02/2007

publique a estrutura das tabelas. não dá pra saber em qual tabela está o campo selecionado.

outra coisa:
´pode ter várias datas e Data do cliente e uma só´ ???
não entendi! como data é uma só se no seu exemplo você mostrou duas datas diferentes para um mesmo cliente?


GOSTEI 0
Sremulador

Sremulador

15/02/2007

Amigo emersom, mil descuplas as datas são de nascimento do cliente então são iguais, muda apenas o setor.

Extrutura

[b:9fd4580a75]CLIENTE[/b:9fd4580a75]
COD NOME DATANSC


[b:9fd4580a75]HISTORICO[/b:9fd4580a75]
CODCLI - CÓDIGO DO CLIENTE DATAMUDA - DATA DE MUDANÇA DE SETOR SETOR - SETOR



se eu conseguisse tipo assim

SELECT CLIENTE, LOCAL, DATA FROM CLIENTE 
INNER JOIN HISTORICO ON (CODCLIENTE=HCODCLIENTE AND MAX(DATAMUDA)) 



valeu


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

15/02/2007

veja se assim funciona (não testei):
select
  h.CODCLI,
  h.DATAMUDA,
  c.CLIENTE,
  c.LOCAL,
  c.DATA
from
  HISTORICO h
left join
  CLIENTE c on (c.COD = h.CODCLIENTE)
where
  h.DATAMUDA =
    (select max(h2.DATAMUDA)
     from HISTORICO h2
     where h2.CODCLIENTE = h.CODCLIENTE)



GOSTEI 0
POSTAR