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
Windows7 my Documents folder
Force Outlook 2003 to use encryption connection to Exchange
Coldfusion - SQL syntax
parsing XMLDOM
How do I write data to separate excel worksheets in coldfusion?
Crystal report 2008, draw graph with huge of data.
Iterating through a PDF file (stepping through) for validation purposes
Cisco VPN client for Windows, use both RSA SecurID soft token and hard token
Assigning a GPO to specific users and one Server only ?
Is there a tool to check to see who has enabled auto-forward in outlook