Sorry for the rubbish title but hopefully this will explain:
Given the table
name | data
---------------------
1 | 1000
1 | 2000
1 | 3000
2 | 1500
2 | 2500
2 | 3500
I want to be able to select the top( x ) for all names ordered by the data value. So if x = 2 the return will be
name | data
---------------------
1 | 2000
1 | 3000
2 | 2500
2 | 3500
;with cte AS
(
SELECT name, data, ROW_NUMBER() OVER (PARTITION BY name ORDER BY data DESC) AS RN
FROM YourTable
)
SELECT name, data
FROM cte
WHERE RN<=2
ORDER BY name, data
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With