我有一个具有以下(简化)结构的表:
Order, Status, Sequence
1000, New, 0
1000, Viewed, 1
1000, Shipped, 2
1001, New, 0
1002, New, 0
1002, Viewed, 1
1002, New, 2
我想要一个 SELECT 语句,它将返回每个订单的最大序列号的行。所以,在上面的例子中,我希望得到的数据集是:
1000, Shipped, 2
1001, New, 0
1002, New, 2
有没有一种简单的方法可以做到这一点?我似乎无法构建一个可以做到这一点的 WHERE 表达式。
回应一些评论:
- 出现这个问题的地方有几个正在使用的 DMBS:MS-SQL、MySQL、Oracle 和 Access。
- 涉及的 DMBS 如此之多,因为正在开发的系统正在整合来自组织中其他数据库的数据。出于这个原因,我无法控制保留字的列名,但我知道需要转义这些名称。
- 许多子查询组合、GROUP BY、DISTINCT、MAX 和 COUNT 都尝试过,但都没有成功。由于查询结果总是以 Excel 结尾,我一直在抓取所有行并在 Excel 中排序和删除重复项。我的偏好是通过让 SQL 查询完成工作来跳过这一步。