Carregando ...
Desculpe, ocorreu um erro ao carregar o conteúdo.
 

Limitar registros no retorno da query

Expandir mensagens
  • Ezequiel Gonzaga
    Boa noite. Preciso montar uma query com as três últimas compras de todos os produtos. SELECT D1_COD,D1_EMISSAO,D1_VALOR FROM SD1010 ORDER BY
    Mensagem 1 de 3 , 27 de mar de 2015
      Boa noite.

      Preciso montar uma query com as três últimas compras de todos os produtos.

      SELECT D1_COD,D1_EMISSAO,D1_VALOR
      FROM SD1010
      ORDER BY D1_COD,D1_EMISSAO

      Se eu coloco o TOP (3) ele trás apenas os três primeiros registros do resultado todo e não é isto que eu quero.

      Eu quero que traga três registros do produto 1, três registros do produto 2, três registros do produto 3, etc...

      É possível fazer isto?

      Grato,

    • Marcos Kirchner
      Ezequiel, sim, com OUTER APPLY é bem fácil. Algo assim: SELECT p.ProdutoID, p.Nome, c.CompraID, c.DataCompra, ... FROM Produtos p CROSS APPLY (SELECT TOP(3)
      Mensagem 2 de 3 , 31 de mar de 2015

        Ezequiel, sim, com OUTER APPLY é bem fácil.

         

        Algo assim:

         

         

        SELECT p.ProdutoID, p.Nome, c.CompraID, c.DataCompra, ...

        FROM Produtos p CROSS APPLY (SELECT TOP(3) * FROM Compras c WHERE c.ProdutoID = p.ProdutoID ORDER BY c.DataCompra DESC) c

         

         

         

        Deve atender o que você precisa.

         

         

        Abraço,

        Marcos

         

         

         

        De: mssql-l@... [mailto:mssql-l@...]
        Enviada em: sexta-feira, 27 de março de 2015 18:47
        Para: mssql-l@...
        Assunto: [mssql-l] Limitar registros no retorno da query

         

         

        Boa noite.

         

        Preciso montar uma query com as três últimas compras de todos os produtos.

         

        SELECT D1_COD,D1_EMISSAO,D1_VALOR

        FROM SD1010

        ORDER BY D1_COD,D1_EMISSAO

         

        Se eu coloco o TOP (3) ele trás apenas os três primeiros registros do resultado todo e não é isto que eu quero.

         

        Eu quero que traga três registros do produto 1, três registros do produto 2, três registros do produto 3, etc...

         

        É possível fazer isto?

         

        Grato,

      • Ezequiel Gonzaga
        Marcos, bom dia. Show de bola. Era isso mesmo. Muito obrigado. Em 31 de março de 2015 10:58, Marcos Kirchner marcos.kirchner@totvs.com.br ... Marcos, bom dia.
        Mensagem 3 de 3 , 31 de mar de 2015
          Marcos, bom dia.

          Show de bola.
          Era isso mesmo.

          Muito obrigado.



          Em 31 de março de 2015 10:58, Marcos Kirchner marcos.kirchner@... [mssql-l] <mssql-l@...> escreveu:
           

          Ezequiel, sim, com OUTER APPLY é bem fácil.

           

          Algo assim:

           

           

          SELECT p.ProdutoID, p.Nome, c.CompraID, c.DataCompra, ...

          FROM Produtos p CROSS APPLY (SELECT TOP(3) * FROM Compras c WHERE c.ProdutoID = p.ProdutoID ORDER BY c.DataCompra DESC) c

           

           

           

          Deve atender o que você precisa.

           

           

          Abraço,

          Marcos

           

           

           

          De: mssql-l@... [mailto:mssql-l@...]
          Enviada em: sexta-feira, 27 de março de 2015 18:47
          Para: mssql-l@...
          Assunto: [mssql-l] Limitar registros no retorno da query

           

           

          Boa noite.

           

          Preciso montar uma query com as três últimas compras de todos os produtos.

           

          SELECT D1_COD,D1_EMISSAO,D1_VALOR

          FROM SD1010

          ORDER BY D1_COD,D1_EMISSAO

           

          Se eu coloco o TOP (3) ele trás apenas os três primeiros registros do resultado todo e não é isto que eu quero.

           

          Eu quero que traga três registros do produto 1, três registros do produto 2, três registros do produto 3, etc...

           

          É possível fazer isto?

           

          Grato,


        Sua mensagem foi enviada com êxito e será entregue aos destinatários em breve.