代码乱了 2022-12-06 15:36 采纳率: 40%
浏览 93
已结题

SQL 分组取数 问题

根据销售数量 - 取 满足数量的前几个批号 ,ID 78 取出前4条满足 销售数量 20;ID7424 取1 条满足了。批号为当时查询时的数据,一个货品,有可能1 条就满足需求,有可能N条才满足

订单ID 订单明细ID 货品ID 采购数量 批号 库存数量
6365318 164886295 78 20 39545 4
6365318 164886295 78 20 39548 1
6365318 164886295 78 20 57621 12
6365318 164886295 78 20 57622 106
6365318 164886295 78 20 57623 44
6365318 164886295 78 20 57624 256
6365318 164886295 78 20 57625 4080
6365318 164886296 7424 1 18476 5047

我想要达到的结果

6365318 164886295 78 20 39545 4
6365318 164886295 78 20 39548 1
6365318 164886295 78 20 57621 12
6365318 164886295 78 20 57622 106
6365318 164886296 7424 1 18476 5047

  • 写回答

2条回答 默认 最新

  • gnn_explorer 2022-12-07 10:56
    关注

    数据存在oracle 数据库吗? 按照批号正序取? UDF可以解决

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    代码乱了 2022-12-07 12:52

    是oracle, 还望大哥指点思路

    回复
    gnn_explorer 回复 代码乱了 2022-12-07 14:16

    SQL如下, 只需要把 表名字和字段名字替换成你的实际的就可以了. 有SQL问题可以找我

    SELECT 
        订单ID,
        订单明细ID, 
        货品ID, 
        采购数量,
        批号, 
        库存数量
    FROM (
        SELECT
            订单ID,
            订单明细ID, 
            货品ID, 
            采购数量,
            批号, 
            库存数量,
            sum(库存数量) OVER (PARTITION BY 货品ID ORDER BY 批号 ASC ) AS SUM_NUM
        FROM
            YOUR_SHECMA.YOUR_TABLE_NAME -- 你的表名字
    ) t
    WHERE SUM_NUM <=20
    
    

    回复
    代码乱了 回复 gnn_explorer 2022-12-07 15:14

    大哥,还是不太对,方便有个联系方式吗

    回复
    展开全部5条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 12月15日
  • 已采纳回答 12月8日
  • 赞助了问题酬金15元 12月7日
  • 修改了问题 12月7日
  • 展开全部
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部