3 maiores valores

23/01/2015

0

Em uma tabela SQL tenho os campos a seguir, Agente, Contrato, Valor, preciso extrair os 3 maiores valores de contrato para cada um dos agentes.
Exemplo:
Agente, Contrato, Valor
01, A, 120
01, B, 110
01, C, 100
02, A, 90
02, B, 70
02, C, 50
E assim sucessivamente.
Desde já agradeço.
Alexandre
Alexandre

Alexandre

Responder

Post mais votado

26/01/2015

WITH RANK_CTE AS (
SELECT AGENTE, CONTRATO, MAX(VALOR) AS 'VALOR', 
ROW_NUMBER() OVER 
    (PARTITION BY AGENTE ORDER BY MAX(VALOR) DESC)  RANK_CONTRATOS
	FROM NOME_TABELA
GROUP BY AGENTE, CONTRATO, VALOR
 )

SELECT * FROM RANK_CTE
WHERE RANK_CONTRATOS <= 3 
ORDER BY 1

Thiago Cruz

Thiago Cruz
Responder

Mais Posts

23/01/2015

Ronaldo Lanhellas

A única forma de fazer isso é através de uma função, pois em um SQL simples você não consegue fazer esse tipo de detalhamento.
Responder

27/01/2015

Alexandre

Thiago,

Perfeito, agradeço a ajuda.

Abraço
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar