【发布时间】:2017-03-05 18:46:30
【问题描述】:
我有一个存储交货日期和订单号的表格。
在这里,我能够获得具有最长交货日期的订单。
SELECT DISTINCT D.ORDER_NO
FROM DELIVERY D
WHERE D.CUSTOMER_NO =112 AND D.DELIVERY_DATE = (SELECT MAX(D1.DELIVERY_DATE) FROM DELIVERY D1
WHERE D1.CUSTOMER_NO = 112 );
这里一个客户可能有多个订单。
现在我想要的是只获得第二个最大日期。
通过使用上述查询,我可以通过将= 更改为< 并在子查询中添加ORDER BY 来获取最大交货日期以外的数据列表。
但它是一个完整的列表,但我只想要第二个最大日期。
请告诉我如何才能获得第二个最大日期。
注意:我尝试过使用ROWNUM<=1,但我的日期有误
【问题讨论】:
-
您使用的是 Oracle 还是 SQL Server?
-
删除 SQL Server 标记,因为
ROWNUM是 Oracle 功能 -
@TimBiegeleisen 我正在使用 Oracle
标签: sql oracle date greatest-n-per-group