none
Max(data),valor RRS feed

  • Pergunta

  • E ae pessoal, estou tentando fazer uma query que retorne o valor da maior data de cada ativo

    Select max(Data_Hora_Reg), Id_Ativo, Valor
    from vw_Precos Where Id_Ativo in(
    818,
    228,
    243,
    323,
    536,
    595,
    717,
    767,
    794,
    797)
    group by Id_Ativo

    mas nao ta funcionando nem a pau.

    sexta-feira, 5 de janeiro de 2007 17:48

Respostas

  • veja este exemplo

     

     


     Create Table #Exemplo (data datetime, valor int, id int)

     insert into #Exemplo (data, valor, id) Values ('2006-01-01',10,1)
     insert into #Exemplo (data, valor, id) Values ('2006-01-02',12,1)
     insert into #Exemplo (data, valor, id) Values ('2006-01-05',10,2)
     insert into #Exemplo (data, valor, id) Values ('2006-01-04',10,3)
     insert into #Exemplo (data, valor, id) Values ('2006-01-05',15,3)

     select #exemplo.* From #Exemplo
     inner join ( select id, max(data) as mx_data
                  From #Exemplo group by id ) mxDrv on Mxdrv.mx_data = #Exemplo.data and mxDrv.id = #Exemplo.Id

     

    Abs;

    segunda-feira, 8 de janeiro de 2007 13:46

Todas as Respostas

  • Inclua o Valor ao Group by

    Select max(Data_Hora_Reg), Id_Ativo, Valor
    from vw_Precos Where Id_Ativo in(
    818,
    228,
    243,
    323,
    536,
    595,
    717,
    767,
    794,
    797)
    group by Id_Ativo,Valor

     

    Espero ter ajudado

    sexta-feira, 5 de janeiro de 2007 17:52
  • Retornaram 3mil linhas, e o correto era soh 10.

     

    sexta-feira, 5 de janeiro de 2007 17:58
  • Coloca um Distinct
    sexta-feira, 5 de janeiro de 2007 18:12
  • Não funcionou, continua retornando milhares de registros...

    Select distinct(max(Data_Hora_Reg)), Id_Ativo, Valor
    from vw_Precos Where Id_Ativo in(
    818,
    228,
    243,
    323,
    536,
    595,
    717,
    767,
    794,
    797)
    group by Id_Ativo,Valor

    sexta-feira, 5 de janeiro de 2007 18:36
  •  

     veja a coluna valor ela pode estar trazendo mais linhas, veja se nao e necessario agrupar com um max(), min(), etc. caso vc. so queria trafazer a linha com a maior data vc. deve agrupar um subselcct e colocar ela no join, qualquer coisa retorne;

     

    Abs;

    segunda-feira, 8 de janeiro de 2007 08:55
  • E ae MArcelo,

    é isso que preciso, PEgar o valor da maior data para uma serie de ID.

     

    segunda-feira, 8 de janeiro de 2007 13:37
  • veja este exemplo

     

     


     Create Table #Exemplo (data datetime, valor int, id int)

     insert into #Exemplo (data, valor, id) Values ('2006-01-01',10,1)
     insert into #Exemplo (data, valor, id) Values ('2006-01-02',12,1)
     insert into #Exemplo (data, valor, id) Values ('2006-01-05',10,2)
     insert into #Exemplo (data, valor, id) Values ('2006-01-04',10,3)
     insert into #Exemplo (data, valor, id) Values ('2006-01-05',15,3)

     select #exemplo.* From #Exemplo
     inner join ( select id, max(data) as mx_data
                  From #Exemplo group by id ) mxDrv on Mxdrv.mx_data = #Exemplo.data and mxDrv.id = #Exemplo.Id

     

    Abs;

    segunda-feira, 8 de janeiro de 2007 13:46