首页 > 解决方案 > 如何对结果数据进行分组和限制

问题描述

我在 ms-access 上运行了以下查询:

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

在此处输入图像描述

事情是我想在为夫妇 t1.[供应商代码],t1.date1 输出时只保留 3 条记录(不少于不多,见图片红框)。有没有办法做到这一点?

这里附上表格数据和结果: 在此处输入图像描述

标签: sqlms-access

解决方案


如果您想要每个供应商的最新三行,您可以使用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
                );

这是基于对您的问题的编辑。您只显示一张数据表,所以我不知道您的查询为什么引用多个表。


推荐阅读