Sql 如何对结果数据进行分组和限制

Sql 如何对结果数据进行分组和限制,sql,ms-access,Sql,Ms Access,我在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 t

我在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夫妇输出时保留3条记录(不少于不多于,见图片红框)。[供应商代码],t1.date1。有没有办法做到这一点

以下为附表数据和结果:

如果您想要每个供应商的最近三行,您可以在中使用

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
                );

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

如果您想要每个供应商的最近三行,您可以使用
中的

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
                );

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

您能显示原始数据并解释您希望查询执行的操作吗?您的查询似乎与表2无关,因此逻辑不清楚。您好,戈登,我已附上原始数据。查询只输出我想要的数据,如果我的行中有三行,如第一幅图所示。至少,我不知道您试图实现什么,无论是概念上的,还是数据方面的。请你重新解释一下规则,以及这三条记录的神奇之处是什么?你好,我看到了一张图片,上面有表格数据和结果。我用颜色来解释logoc。谢谢您能否显示原始数据并解释您希望查询执行的操作?您的查询似乎与表2无关,因此逻辑不清楚。您好,戈登,我已附上原始数据。查询只输出我想要的数据,如果我的行中有三行,如第一幅图所示。至少,我不知道您试图实现什么,无论是概念上的,还是数据方面的。请你重新解释一下规则,以及这三条记录的神奇之处是什么?你好,我看到了一张图片,上面有表格数据和结果。我用颜色来解释logoc。谢谢