You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询如何获取各item每月最大due_date对应的net_avail_qty记录

你的需求本质是按item+到期日所在月份分组后,取每个分组内到期日最大的整行数据。你之前的写法只能取到分组后的最大到期日,无法直接关联对应net_avail_qty的原因是:net_avail_qty不在GROUP BY的分组维度中,也没有被聚合函数包裹,直接添加会导致同分组下所有不同net_avail_qty的行全部返回。

推荐使用Oracle支持的窗口函数实现,写法简洁且性能更优:

SELECT item, due_date, net_avail_qty
FROM (
    SELECT 
        item, 
        due_date, 
        net_avail_qty,
        -- 按item和月份分组,组内按到期日倒序排序
        ROW_NUMBER() OVER (
            PARTITION BY item, TRUNC(due_date, 'MM') 
            ORDER BY due_date DESC
        ) AS rn
    FROM 你的实际表名
) t
WHERE rn = 1 -- 取每个分组内到期日最大的1条记录
ORDER BY item, due_date;

如果是不支持窗口函数的老版本Oracle,也可以用关联子查询实现:

SELECT a.item, a.due_date, a.net_avail_qty
FROM 你的实际表名 a
WHERE a.due_date = (
    SELECT MAX(b.due_date)
    FROM 你的实际表名 b
    WHERE b.item = a.item 
    AND TRUNC(b.due_date, 'MM') = TRUNC(a.due_date, 'MM')
)
ORDER BY a.item, a.due_date;

以上两种写法返回的结果和你需要的最终输出完全匹配。

内容的提问来源于stack exchange,提问作者MMITSCH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:57:03