HiI'd really appreciate some help with this.I've got a table of stories - each with a date - linked to a table of categories. A story can appear in more than one category.What I need is a results set that gives me a list of all the categories, together with the most recent story in that category BUT I don't want a story to appear more than once. So, if story 1 was the most recent story in category 1 AND category 2, then it should only appear next to category 1 and the NEXT MOST recent story against category 2. (Actually, it doesn't matter whether it comes against Cat 1 or Cat 2 so long as it's somewhere).Can this be done on SQL2000 with a single query?The SELECT at the bottom is my weak attempt and I don't know where to go next.Hopefully the code below is helpful.Regards and thanksJohnCREATE TABLE [#Stories]( [storyID] int IDENTITY(1,1) NOT NULL, [story_date] smalldatetime NOT NULL, [story_title] nvarchar(128) NULL, [story_body] ntext NULL,)CREATE TABLE [#Categories]( [CatID] int IDENTITY(1,1) NOT NULL, [cat_title] nvarchar(128) NULL)CREATE TABLE [#StoryCategories]( [CatID] int NOT NULL, [StoryID] int NULL)INSERT INTO #Categories (cat_title) VALUES ('Category 1'), ('Category 2'), ('Category 3'), ('Category 4'), ('Category 5')INSERT INTO #Stories (story_date, story_title, story_body) VALUES ( DATEADD( mi, 5235, GETDATE()), 'My Story 1', 'Something in story 1'), ( DATEADD( mi, 600, GETDATE()), 'My Story 2', 'Something in story 2'), ( DATEADD( mi, 2351, GETDATE()), 'My Story 3', 'Something in story 3'), ( DATEADD( mi, 1386, GETDATE()), 'My Story 4', 'Something in story 4'), ( DATEADD( mi, 7879, GETDATE()), 'My Story 5', 'Something in story 5'), ( DATEADD( mi, 1245, GETDATE()), 'My Story 6', 'Something in story 6'), ( DATEADD( mi, 4435, GETDATE()), 'My Story 7', 'Something in story 7'), ( DATEADD( mi, 9912, GETDATE()), 'My Story 8', 'Something in story 8'), ( DATEADD( mi, 2345, GETDATE()), 'My Story 9', 'Something in story 9'), ( DATEADD( mi, 1190, GETDATE()), 'My Story 10', 'Something in story 10'), ( DATEADD( mi, 3335, GETDATE()), 'My Story 11', 'Something in story 11'), ( DATEADD( mi, 5672, GETDATE()), 'My Story 12', 'Something in story 12')INSERT INTO #StoryCategories (CatID, StoryID) VALUES (1,2), (1,3), (1,4), (1,5), (2,2), (2,5), (2,7), (2,8), (2,9), (3,1), (3,4), (3,5), (3,7), (3,12), (4,6), (4,9), (4,10), (4,12), (5,1), (5,3), (5,5), (5,9), (5,11), (5,12)SELECT MAX(s.story_date) as MaxDate, sc.catid FROM #Stories s INNER JOIN #StoryCategories sc ON sc.StoryID = s.storyID GROUP BY sc.CatID