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 to Install JBOSS on windows xp
Two computers conected by ethernet to same router
Access is denied, unable to remove device when trying to delete a printer.
Using sendkeys in SQL
SSRS Combine two datasets into one data region - Must be in report not in SQL server
Change the login name of a user in a SQL Server 2005 database
Excel 2007 Can Not Display Images From Web
iSCSI Performance Tuning
Mysql Query to select from two tables
What would be my excel formular to find the percentage of errors