Usuário com melhor resposta
Retornar um número de itens fixos por cliente

Pergunta
-
Olá pessoal, como faço para ao dar um select pegar apenas 100 registros por clienteID? Ou seja, tenho uma tabela com os dados das compras de cada cliente, porém agrupados pelo clienteID preciso trazer 100 registros de cada cliente.
Abraços,
Abs, Ricardo D. Beck Conectta Softwares http://twitter.com/duartebeck
Respostas
-
Boa Noite,
Embora o ROW_NUMBER seja uma opção eu honestamente faria uso de outra construção (mais direta).
SELECT <Colunas> FROM Clientes As C
CROSS APPLY (
SELECT TOP(100) <Colunas> FROM Pedidos As P
WHERE C.ClienteID = P.ClienteID) As PS[ ]s,
Gustavo Maia Aguiar
Blog: http://gustavomaiaaguiar.wordpress.com
Vídeos:http://www.youtube.com/user/gmasqlClassifique as respostas. O seu feedback é imprescindível
- Sugerido como Resposta Gustavo Maia Aguiar quarta-feira, 5 de setembro de 2012 01:04
- Marcado como Resposta Ricardo D. Beck segunda-feira, 10 de setembro de 2012 10:33
-
Olá Ricardo,
Você poderia ultilizar o Row_Number
Ex:
;With Clientes as (Select *,Row_number() Over(Partition by clienteID Order by clienteId) as Registro from SuaTabela) Select * from Clientes where Registro <= 100
[ ]´s,
Lukas Baldan- Marcado como Resposta Ricardo D. Beck terça-feira, 4 de setembro de 2012 19:47
Todas as Respostas
-
Informe por favor a versão do seu SQL para sabermos os recursos que temos disponíveis.
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta. -
-
Olá Ricardo,
Você poderia ultilizar o Row_Number
Ex:
;With Clientes as (Select *,Row_number() Over(Partition by clienteID Order by clienteId) as Registro from SuaTabela) Select * from Clientes where Registro <= 100
[ ]´s,
Lukas Baldan- Marcado como Resposta Ricardo D. Beck terça-feira, 4 de setembro de 2012 19:47
-
-
Boa Noite,
Embora o ROW_NUMBER seja uma opção eu honestamente faria uso de outra construção (mais direta).
SELECT <Colunas> FROM Clientes As C
CROSS APPLY (
SELECT TOP(100) <Colunas> FROM Pedidos As P
WHERE C.ClienteID = P.ClienteID) As PS[ ]s,
Gustavo Maia Aguiar
Blog: http://gustavomaiaaguiar.wordpress.com
Vídeos:http://www.youtube.com/user/gmasqlClassifique as respostas. O seu feedback é imprescindível
- Sugerido como Resposta Gustavo Maia Aguiar quarta-feira, 5 de setembro de 2012 01:04
- Marcado como Resposta Ricardo D. Beck segunda-feira, 10 de setembro de 2012 10:33
-
-
Oi Lukas,
É uma alternativa própria para essa necessidade, mas sua solução também é muito boa.
Só não tive tempo de testar com uma massa de dados representativa qual das duas construções seria mais performática.[ ]s,
Gustavo Maia Aguiar
Blog: http://gustavomaiaaguiar.wordpress.com
Vídeos:http://www.youtube.com/user/gmasqlClassifique as respostas. O seu feedback é imprescindível