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

SQL Agrupar por menor data de nascimento


novicebg

Pergunta

Olá..

Tenho uma tabela de pessoas e outra de endereços.

Estou usando o seguinte select:

select pessoa.nome, pessoa.data_nascimento, endereco.rua inner join endereco on pessoa.endereco = endereco.id order by pessoa.data_nascimento

Agora não sei como fazer para mostrar apenas o mais velho de cada endereço. Obrigado.

Editado por novicebg
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Olá novicebg

Já passei por uma situação semelhante e resolvi utilizando uma sub query para agrupar os dados pela data desejada (MIN ou MAX).

Criei uma estrutura semelhante a que você descreveu para simular a situação e gerei um script que atende a sua necessidade.

Acredito que haja uma solução melhor, mas o script abaixo pode ser um modelo para resolver o seu problema:

-- Criando tabelas para teste
CREATE TABLE #endereco (id INT IDENTITY PRIMARY KEY, endereco VARCHAR(100))
CREATE TABLE #pessoa (id INT IDENTITY PRIMARY KEY, nome VARCHAR(100), dtNasc DATETIME, endereco INT FOREIGN KEY REFERENCES endereco(id))

-- Inserindo dados nas tabelas
INSERT INTO #endereco VALUES ('endereco 1')
INSERT INTO #endereco VALUES ('endereco 2')
INSERT INTO #endereco VALUES ('endereco 3')

INSERT INTO #pessoa VALUES ('Pessoa A','1986-05-01',1)
INSERT INTO #pessoa VALUES ('Pessoa B','1943-12-25',2)
INSERT INTO #pessoa VALUES ('Pessoa C','1960-04-21',1)
INSERT INTO #pessoa VALUES ('Pessoa D','1989-01-06',1)
INSERT INTO #pessoa VALUES ('Pessoa E','1988-06-17',2)

-- Realizando consulta desejada
SELECT 
    P.id, P.nome, P.dtNasc, P.endereco, E.endereco 
FROM 
    #pessoa P 
INNER JOIN (SELECT DISTINCT MIN(dtNasc) AS dtNasc, endereco FROM #pessoa GROUP BY endereco) M ON
        M.endereco = P.endereco
    AND M.dtNasc = P.dtNasc
INNER JOIN #endereco E ON
        E.id = P.endereco

-- Excluindo tabelas
DROP TABLE #pessoa
DROP TABLE #endereco

Abs...

Editado por Evandro Junqueira Ramos
Link para o comentário
Compartilhar em outros sites

  • 0

Você pode transformar a sub query em uma view também, pode facilitar.

Abs!

Olá novicebg

Já passei por uma situação semelhante e resolvi utilizando uma sub query para agrupar os dados pela data desejada (MIN ou MAX).

Criei uma estrutura semelhante a que você descreveu...

Evandro,

Vou testar e posto o resultado.

Muito obrigado.

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
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...