Ir para conteúdo
Fórum Script Brasil
  • 0

Selecionar primeira tupla de cada agrupamento


rderoci

Pergunta

Caros,

Mais uma vez cá estou solicitando ajuda de vocês!

Tenho o seguinte "problema":

Tenho que selecionar a primeira linha de cada agrupamento.

Exemplo:

MATRICULA|VALOR1|VALOR2|DATA

111............|0..........|1.........|01/01/2010

111............|1..........|2.........|02/01/2010

111............|0..........|1.........|03/01/2010

333............|4..........|5.........|03/01/2010

333............|5..........|2.........|07/01/2010

777............|1..........|2.........|04/02/2010

777............|0..........|1.........|09/01/2010

888............|1..........|2.........|05/01/2010

No caso, teria que fazer um select que me retornasse somente 1 registro de cada agrupamento (por matricula), e esse 1 registro seria o que tiver a DATA mais atual, ou seja, teria que me retornar:

MATRICULA|VALOR1|VALOR2|DATA

111............|0..........|1.........|03/01/2010

333............|5..........|2.........|07/01/2010

777............|1..........|2.........|04/02/2010

888............|1..........|2.........|05/01/2010

Valeu!!! :wacko:

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde Rderoci,

você pode fazer o agrupamento por Matrícula, pegando o max(DATA). Ai você conseguirá agrupar, pegando um único registro por matricula (sendo ele o mais recente).

Mas tem uma obs.: para realizar o agrupamento, os campos VALOR1 e VALOR2 devem ficar de fora, porque senão não ocorrerá o agrupamento corretamente. Ficaria mais ou menos assim:

select matricula, MAX(data) FROM TABELA GROUP BY matricula

Link para o comentário
Compartilhar em outros sites

  • 0
Boa tarde Rderoci,

você pode fazer o agrupamento por Matrícula, pegando o max(DATA). Ai você conseguirá agrupar, pegando um único registro por matricula (sendo ele o mais recente).

Mas tem uma obs.: para realizar o agrupamento, os campos VALOR1 e VALOR2 devem ficar de fora, porque senão não ocorrerá o agrupamento corretamente. Ficaria mais ou menos assim:

select matricula, MAX(data) FROM TABELA GROUP BY matricula

Fulvio,

Exatamente aí é que está: tenho que retornar o VALOR1 e VALOR2... Será que um simples select eu não conseguirei? Terei que fazer alguma procedure?

Link para o comentário
Compartilhar em outros sites

  • 0

Hehehe, aí vai ter que rolar uma gambiarra (ou uma "Solução Alternativa" - igual fala um colega meu).

A tabela de exemplo TABELAX é a mesma tanto no select como no subselect...

SELECT * FROM TABELAX P WHERE p.Data= (select MAX(data) FROM TABELAX p1 where p.matricula= p1.matricula GROUP BY p1.matricula)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...