Microsoft
Software
Hardware
Network
Question : SELECT TOP n of each
I want to select the TOP n records from a table for each of the possible values of another field. What is the best way to do that in a single query?
I came up with this:
SELECT TOP 5 <fields> FROM <table> WHERE <fk_field> = 1 ORDER BY insert_date
UNION
SELECT TOP 5 <fields> FROM <table> WHERE <fk_field> = 2 ORDER BY insert_date
....
(etc)
but that requires that I need to hardcode all values of <fk_field> and I do not want that. <fk_field> is a foreign key, so it is not too hard to get all possible values with a query.
I could use that in a stored procedure filling a temp_table with a number of queries. But I wonder is there is a better method.
Answer : SELECT TOP n of each
SQL Server 2005+
SELECT <fields>
FROM
(
SELECT <fields>, rn=row_number() over (partition by <fk_field> order by insert_date)
FROM <table>
) SQ
WHERE rn<=5
--ORDER BY insert_date
Random Solutions
store comma separated multiple numbers in a mysql database field database and query them efficiently
Sync Access database contacts with Exchange Contacts list
Gateway for Server automatically being removed after restart
ACT 2009 - How to Move database
Macro that will create 52 otherwise identical named ranges, each with a different number in the middle.
Does anyone know how to make a disk image from the iphone memory?
HP PRINTER P3015 and P3005 cartridge compartible?
SecureCRT, WebHost Manager and Keys
SQL AFTER UPDATE TRIGGER
Service policy is in suspended mode