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
How Do I Create a Pie Chart from a DataTable
Maxtor OneTouch 4 Family drive is no longer working
Trying to redirect a user from http to https automatically. Windows 2008 running II7
Access 2007 and sendkeys
extracting BLOBs
java.lang.UnsatisfiedLinkE
rror
Xerox Scan to email issue - Gmail Google Apps Premiere
Move DC role from Exchange Server
Cpanel LFD firewall (linux LAMP server)
Overlapping digram borders