none
SQL com Max e Group By RRS feed

  • Pergunta

  •  

    E aí pessoal blz?

    é o seguinte, tenho uma tabela filho desse jeito

     

    CoddaPai, CodPK, MinhaData

    1          1      2007-08-03

    1          9      2006-08-05

    3          18     2005-06-18

    3          22     2007-07-03   

    3          14     2007-01-12

    6          26     2005-03-05

    9          25     2009-05-10

     

    O problema é que quero agrupar por CoddaPai, e a data máxima do campo minha data, porém que quero saber, qual codPK pertence a data que ele pegou

     

    o resultado seria isso:

     

    CoddaPai, CodPK, MinhaData

    1          1      2007-08-03

    3          22     2007-07-03   

    6          26     2005-03-05

    9          25     2009-05-10

     

    Alguém sabe como ficaria a sql de uma consulta assim?

     

    desde já, obrigado

    terça-feira, 21 de agosto de 2007 19:51

Todas as Respostas

  • Ricardo,
    acho que isto resolve:

    create table teste_tb(CoddaPai int, CodPK int, MinhaData smalldatetime)
    set language 'english'

    insert into teste_tb(CoddaPai,CodPK,MinhaData)values(1,1,'2007-08-03')
    insert into teste_tb(CoddaPai,CodPK,MinhaData)values(1,9,'2006-08-05')
    insert into teste_tb(CoddaPai,CodPK,MinhaData)values(3,18,'2005-06-18')
    insert into teste_tb(CoddaPai,CodPK,MinhaData)values(3,22,'2007-07-03') 
    insert into teste_tb(CoddaPai,CodPK,MinhaData)values(3,14,'2007-01-12')
    insert into teste_tb(CoddaPai,CodPK,MinhaData)values(6,26,'2005-03-05')
    insert into teste_tb(CoddaPai,CodPK,MinhaData)values(9,25,'2009-05-10')

    select a.CoddaPai, b.CodPK, a.MinhaData
    from
    (select CoddaPai, max(MinhaData) 'MinhaData'
    from teste_tb
    group by CoddaPai) a
    inner join
    teste_tb b
    on a.CoddaPai = b.CoddaPai and
    a.MinhaData = b.MinhaData
    order by CoddaPai

    Resultado:

    CoddaPai    CodPK       MinhaData
    ----------- ----------- -----------------------
    1           1           2007-08-03 00:00:00
    3           22          2007-07-03 00:00:00
    6           26          2005-03-05 00:00:00
    9           25          2009-05-10 00:00:00

    Boa sorte.
    terça-feira, 21 de agosto de 2007 23:44