Duvida FOR EACH - trazer registro com maior data

Discussão em 'Progress 4GL' iniciado por jc01, Abril 20, 2015.

  1. jc01

    jc01 Membro Participativo

    Código Tipo Grupo Data Valor
    1 2 1 01/01/2010 1226,35
    2 2 1 01/05/2010 3263,23
    3 2 1 01/04/2010 3352,98
    4 2 2 01/06/2012 1233,27
    5 2 2 01/03/2011 3266,35
    6 3 1 01/02/2009 8963,32
    7 3 1 01/10/2010 903,26
    8 3 2 01/03/2012 63,23
    9 3 2 01/02/2012 753,15


    No FOR EACH preciso fazer com que traga apenas o registro com maior data para o agrupamento TIPO e GRUPO, ou seja, tenho que trazer apenas os registros abaixo:

    Código Tipo Grupo Data Valor
    2 2 1 01/05/2010 3263,23
    4 2 2 01/06/2012 1233,27
    7 3 1 01/10/2010 903,26
    8 3 2 01/03/2012 63,23


    Para o agrupamento 2 <> 1, a maior data é 01/05/2010, então trás esse registro.
    Para o agrupamento 2 <> 2, a maior data é 01/06/2010, então trás esse registro.
    E assim por diante...
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Você já usou o BREAK BY ?
  3. jc01

    jc01 Membro Participativo

    Já tentei, mas confesso que não entendi muito bem como usaria o BREAK BY pra essa situação em específico.
  4. rlfritz

    rlfritz Membro Ativo

    Algo assim:
    Código:
    for each <tabela> where .....  break by tabela.tipo by tabela.grupo by tabela.data :
    
         if last-of(tabela.grupo) and last-of(tabela.tipo) and last-of(tabela.data) then do:
              /*faz o que tem que fazer */
    
         end.
    
    end.
    
  5. rlfritz

    rlfritz Membro Ativo

    desculpa... acho que coloquei algo a mais....

    Código:
    for each <tabela> where ..... break by tabela.tipo by tabela.grupo by tabela.data :
    
         if last-of(tabela.grupo) and last-of(tabela.tipo)  then do:
                       /*faz o que tem que fazer */
    
        end.
    
    end.
    
    
  6. jc01

    jc01 Membro Participativo

    Não funciona, já tinha tentado desse jeito. Assim ele não trás dois grupos para o mesmo tipo. Por exemplo, deveria trazer:

    2 2 1 01/05/2010 3263,23
    4 2 2 01/06/2012 1233,27

    E só trouxe:

    2 2 1 01/05/2010 3263,23

Compartilhe esta Página