2012-04-11 5 views
1

Я не могу решить эту проблему на MS Access SQL.MSAccess: выберите N записей из каждой категории

У меня есть Foo стол с этих полей: идентификатор, название, категория, дата

Мне нужно показать 6 записей, показывающих 2 самых последних элементов из каждой категории

Например, я есть:

ID TITLE CAT DATE 
------------------------ 
1 aaa  cat1 12/03/12 
2 sdfs cat2 12/03/12 
3 asg  cat2 13/03/12 
4 flkgjfl cat3 11/03/12 
5 dgdg cat1 18/03/12 
6 dfgd cat1 15/03/12 
7 dgdgd cat3 18/03/12 
8 dfgd cat3 12/03/12 
9 uiuou cat1 14/03/12 
10 ghj  cat4 11/03/12 

Итак, мне нужно что-то вроде:

ID  TITLE CAT  DATE 
---------------------------------- 
5 dgdg cat1 18/03/2012 
6 dfgd cat1 15/03/2012 
3 asg cat2 13/03/2012 
2 sdfs cat2 12/03/2012 
7 dgdgd cat3 18/03/2012 
8 dfgd cat3 12/03/2012 

Спасибо заранее.

ответ

1

Как насчет этого, cat - это имя таблицы.

SELECT cat.ID, cat.TITLE, cat.CAT, cat.DATE 
FROM cat 
WHERE cat.ID In (
    SELECT TOP 2 id 
    FROM cat c 
    WHERE cat.cat = c.cat 
    ORDER BY [date] DESC,id) 
ORDER BY cat.CAT, cat.DATE; 
+0

Мое сознание блуждало. – Fionnuala

+0

@ Спасибо за участие. Я сделал откат, потому что интересным причудом Access является то, что вы можете использовать зарезервированное слово без квадратных скобок, если вы префикс его таблицей или псевдонимом. Это то, что я пытаюсь найти в почтовом сообщении здесь и там :) – Fionnuala

+0

Работает так, как я себе представлял. Разочарование того, что я не могу это обработать. Большое спасибо! – Jaume

Смежные вопросы