我正在Access 2003中制作一个报告,其中包含相关记录的子报告。在子报表中,我只想要前两个记录。当我在子报表的查询中添加“ TOP 2”时,似乎在筛选链接字段之前先选择了前两个记录。如何仅获取适用于相应链接字段的那些记录的前两个记录?谢谢。
问题来源于stack overflow
下面的示例查询应该为每个客户返回一对最新订单(而不是所有订单):
select Order.ID, Order.Customer_ID, Order.PlacementDate from Order where Order.ID in ( select top 2 RecentOrder.ID from Order as RecentOrder where RecentOrder.Customer_ID = Order.Customer_ID order by RecentOrder.PlacementDate Desc ) 这样的查询可以在子报表中使用,以避免使用临时表。
CAVEAT EMPTOR:我没有测试此示例查询,也不知道该查询是否适用于针对Jet数据库运行的报表(我们不使用Access来存储数据,并且避免使用瘟疫:-)。但是它应该针对SQL Server。
我也不知道您的情况会如何。像往常一样,这取决于。:-)
顺便说一句,谈到性能和黑客。我不会将使用临时表视为黑客。最糟糕的是,此技巧可以被认为是报表的一个比必要的界面复杂得多的界面。:-)使用这种临时表实际上可能是提高性能的一种好方法。因此,不要着急将其注销。:-)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。