我有一个表,其中存储了交货日期和订单号。
在这里,我能够得到最大交货日期的订单。
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
,但我得到了错误的日期
7条答案
按热度按时间new9mtju1#
假设您使用的是Oracle:
htzpubme2#
e3bfsja23#
您可以尝试以下查询:
子查询将返回第二个最大交货日期,它将给出第二个最大日期的order_no。
u5i3ibmn4#
从表中选择第二个最大日期
zzzyeukh5#
nlejzf6q6#
ma8fv8wu7#
更改
D.DELIVERY_DATE =
至
D.DELIVERY_DATE <
或类似下面的东西