DECLARE @test TABLE(id int primary key,pr_1 int,pr_2 int)
INSERT @test VALUES
(1,1,1600),
(2,2,3200),
(3,3,4800),
(4,2,3200),
(5,3,5400),
(6,1,1800),
(7,3,5400),
(8,3,5400),
(9,1,1800),
(10,3,5400),
(11,3,5400),
(12,2,3600),
(13,1,2300),
(14,3,6900),
(15,1,2300),
(16,3,6900),
(17,1,2500),
(18,2,5000),
(19,2,5600),
(20,3,8400),
(21,1,3000),
(22,3,8400),
(23,2,6000),
(24,1,3000),
(25,3,8400)
;WITH CTE(pr_1, pr_2, RN) AS
(SELECT DISTINCT pr_1, pr_2, DENSE_RANK () OVER (PARTITION BY pr_1 ORDER BY pr_2 DESC) AS RN
FROM @test)
SELECT pr_1, pr_2 FROM CTE WHERE RN <=2 ORDER BY 1, 2 DESC
pr_1 pr_2
----------- -----------
1 3000
1 2500
2 6000
2 5600
3 8400
3 6900
(6 row(s) affected)