書籍表 `Book` 關聯作者表 `Author`,依 `PublishDate` 遞減,取每位作者最新 5 本書。
CREATE TABLE Author (AuthorID INT IDENTITY PK, AuthorName NVARCHAR(50), ...);
CREATE TABLE Book (ID INT IDENTITY, BookName NVARCHAR(35), PublishDate DATETIME, AuthorID INT FK);
-- 插入張三 6 本、王五 2 本、趙四 1 本
SELECT * FROM (
SELECT
ROW_NUMBER() OVER (PARTITION BY A.AuthorID ORDER BY B.PublishDate DESC) AS RowNum,
A.AuthorName, B.BookName, B.PublishDate
FROM Book B INNER JOIN Author A ON A.AuthorID = B.AuthorID
) T
WHERE T.RowNum <= 5;
`PARTITION BY AuthorID` 為每位作者獨立編號,`ORDER BY PublishDate DESC` 依新舊排序,外層篩選 `RowNum <= 5` 即得各組 Top 5。
適用 SQL Server 2005+,免用游標/暫存表,效能佳。