Usuário com melhor resposta
consulta com quantidade determinada

Pergunta
-
Bom dia
Tenho um banco de dados em SQL com uma grande quantidade de pedidos e preciso fazer uma consulta que me retorne 10 pedidos de cada cidade.
os campos do meu banco são : ID_CLIENTE, NRO_PEDIDO, CIDADE, UF
Existe uma forma simples de trazer essa quantidade de cada cidade sem ter q consultar uma a uma?
obrigado
Respostas
-
sim.. usando o With:
WITH TOPTENCidades AS ( SELECT *, ROW_NUMBER() over ( PARTITION BY [CIDADE] order by [CIDADE])AS RowNo FROM [PEDIDOS]) SELECT * FROM TOPTENCidades WHERE RowNo <=10
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam Trindade sexta-feira, 2 de setembro de 2016 15:46
- Marcado como Resposta Dznedin sexta-feira, 2 de setembro de 2016 16:54
Todas as Respostas
-
sim.. usando o With:
WITH TOPTENCidades AS ( SELECT *, ROW_NUMBER() over ( PARTITION BY [CIDADE] order by [CIDADE])AS RowNo FROM [PEDIDOS]) SELECT * FROM TOPTENCidades WHERE RowNo <=10
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam Trindade sexta-feira, 2 de setembro de 2016 15:46
- Marcado como Resposta Dznedin sexta-feira, 2 de setembro de 2016 16:54
-
Eu gosto muito de usar CTEs não recursiva segue um exemplo
IF ( OBJECT_ID('TEMPDB..#Pedidos') IS NOT NULL ) DROP TABLE #Pedidos; CREATE TABLE #Pedidos ( ID_CLIENTE INT NOT NULL , NRO_PEDIDO INT, Valor DECIMAL(18,2), CIDADE VARCHAR(MAX) ); INSERT INTO #Pedidos ( ID_CLIENTE, NRO_PEDIDO,Valor ,CIDADE) VALUES (1,1,10,'Brasilia'), (1,2,20,'Brasilia'), (1,3,30,'São Paulo'), (1,4,10,'Brasilia'), (1,5,30,'São Paulo'), (1,6,30,'Brasilia'), (1,7,30,'Brasilia'), (1,8,30,'Brasilia'), (1,9,30,'Brasilia'), (1,10,30,'Brasilia'), (1,11,30,'São Paulo'), (1,12,30,'São Paulo'), (1,13,30,'São Paulo'); with CTENaoRecursiva AS ( SELECT P.ID_CLIENTE , P.NRO_PEDIDO , P.Valor , Orden = ROW_NUMBER() OVER(PARTITION BY p.CIDADE ORDER BY p.Valor), P.CIDADE FROM #Pedidos AS P )
SELECT * FROM CTENaoRecursiva C
WHERE C.Orden < 10 AND C.CIDADE ='Brasilia'
Wesley Neves
- Editado Wesley Neves sexta-feira, 2 de setembro de 2016 15:13 erro
-
-
-
@José,
Novas normas do governo Canadense... Agora somos obrigados à nao desperdiçar espaços vazios. :P
Sei lá o que aconteceu.. no colar todos os espaço foram retirados...
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam Trindade sexta-feira, 2 de setembro de 2016 15:46
-
-