Как сгруппировать и ограничить данные результатов - PullRequest
1 голос
/ 30 марта 2020

У меня следующий запрос на ms-доступ:

select
t1.[supplier code], t1.date1,t1.date2
from
otifdatatoexport t1 left join otifdatatoexport t2 on 
t1.date1 >= t1.date2 and t1.[supplier code] = t2.[supplier code]
group by
t1.date1,
t1.[supplier code],t1.date2
order by
t1.[supplier code],
t1.date1

enter image description here

Я хотел бы сохранить только 3 записи ( не менее не более (см. Красную рамку) при выводе для пары t1. [Код поставщика], t1.date1. Есть ли способ достичь этого?

Здесь прилагаются данные таблицы и результаты: enter image description here

1 Ответ

0 голосов
/ 30 марта 2020

Если вам нужны последние три строки для каждого поставщика, вы можете использовать in:

select t.*
from t
where t.date in (select top (3) t2.date
                 from t t2
                 where t2.supplier = t.supplier
                 order by t2.date desc
                );

Это основано на редактировании вашего вопроса. Вы показываете только одну таблицу данных, поэтому я не знаю, почему ваш запрос ссылается на несколько таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...