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
vlan isolation - need to keep a vlan from seeing network
How do I mount a partition in deft linux?
Click on an item in a list box and have that value populate a text field
iMac Snow Leopard Mouse pointer jitter and always go back to upper left corner
Cost of CAT5e cable installation
Learning PHP PDO
Buffalo Tera Station and Windows Server 2008 Authentification
Internet Usage Tool
Open new window from gridview hyperlink with no menu or toolbar in new window (also set width and height)
troubles getting BETWEEN logic to work