Pular para o conteúdo
  • Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 16 anos, 2 meses atrás por Avatar photoLeonardo Litz.
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #83814
    Anônimo

      Tenho 2 tabelas…

      PRODUTOS
      CODIGO NOME
      0001 PRO 1
      0002 PRO 2
      0003 PRO 3

      LANCAMENTOS
      CODIGO DATA VALOR TIPO
      0001 01/01/08 4,95 E
      0001 13/03/08 9,85 E
      0001 27/04/08 8,95 E
      0001 27/04/08 7,95 E
      0001 27/04/08 6,95 E
      0001 01/05/08 3,95 E
      0002 01/01/08 4,95 E
      0002 13/03/08 6,55 E
      0002 13/03/08 5,66 E
      0002 01/05/08 3,95 E
      0003 23/06/08 1,95 E

      Preciso trazer o último valor da última data…

      O resultado esperado para uma consulta da data 30/04/2008 seria:

      0001 PRO1 27/04/08 8,95 E
      0002 PRO2 13/03/08 6,66 E
      0003 PRO3 – – –

      Usei:

      select codigo,data,valor from lancamentos LANPRO where data IN (select max(data) from lancamentos LANDATA where landata.data<'30/04/08' and landata.codigo=lanpro.codigo) order by codigo Funciona... o problema é que tendo lancamentos com datas repetidas ele traz o seguinte: 0001 PRO1 27/04/08 8,95 E 0001 PRO1 27/04/08 7,95 E 0001 PRO1 27/04/08 6,95 E 0002 PRO2 13/03/08 6,66 E 0002 PRO2 13/03/08 5,66 E 0003 PRO3 - - - E não posso ter registros repetidos. Alguem tem alguma sugestão?

      #83816
      Avatar photoLeonardo Litz
      Participante

        Cara vc necessita que seja trazido os valores tb ou somente a data?

        Se não for necessário deixe apenas a coluna da data e de um distinct.

        #83819
        Anônimo

          Olá Litz,

          Preciso dos valores também.

          0001 PRO1 27/04/08 8,95 E
          0002 PRO2 13/03/08 6,66 E
          0003 PRO3 – – –

          #83821
          Avatar photoLeonardo Litz
          Participante

            Se vc usar a regra vc o maior valor com maior data que te interressa então é assim

            select codigo, max(data), max(valor)
            from lancamentos LANPRO
            where data IN (select max(data)
            from lancamentos LANDATA
            where landata.data < '30/04/08'
            and landata.codigo = lanpro.codigo)
            group by codigo
            order by codigo

            ou

            select codigo, max(data), max(valor)
            from lancamentos LANPRO
            where data < '30/04/08'
            group by codigo
            order by codigo

            Blz?

          Visualizando 4 posts - 1 até 4 (de 4 do total)
          • Você deve fazer login para responder a este tópico.
          plugins premium WordPress