Oracle 19.3:按日期/尺码计算avail_qty的SQL实现需求
Oracle 19.3 按日期与尺码计算可用数量的SQL实现
环境为Oracle 19.3,需基于提供的test表数据,按avail_date(日期)和size_id(尺码)维度计算avail_qty(可用数量)。
数据表定义与数据插入
create table test ( avail_date date ,size_id varchar2(10) ,purchases number ,sales number ,oh_qty number ); insert into test values (to_date('3/1/2024','mm/dd/yyyy'),'30',0,0,20); insert into test values (to_date('3/1/2024','mm/dd/yyyy'),'32',0,0,15); insert into test values (to_date('3/1/2024','mm/dd/yyyy'),'34',0,5,10); insert into test values (to_date('3/25/2024','mm/dd/yyyy'),'30',5,0,20); insert into test values (to_date('3/25/2024','mm/dd/yyyy'),'32',0,1,15); insert into test values (to_date('3/25/2024','mm/dd/yyyy'),'34',3,5,10); insert into test values (to_date('4/5/2024','mm/dd/yyyy'),'30',1,0,20); insert into test values (to_date('4/5/2024','mm/dd/yyyy'),'32',0,0,15); insert into test values (to_date('4/5/2024','mm/dd/yyyy'),'34',1,1,10);
计算逻辑与SQL实现
由于附图公式未提供,基于零售库存常规逻辑,可用数量核心计算公式为:avail_qty = oh_qty + purchases - sales
其中:
oh_qty:期初库存purchases:当期采购量sales:当期销售量
1. 单日期维度的可用数量计算
直接按日期和尺码计算单期可用数量:
select avail_date, size_id, oh_qty + purchases - sales as avail_qty from test order by avail_date, size_id;
2. 累计可用数量计算(滚动库存)
若需按尺码维度计算从最早日期到当前日期的累计可用数量,使用窗口函数实现:
select avail_date, size_id, oh_qty + purchases - sales as current_avail_qty, sum(oh_qty + purchases - sales) over (partition by size_id order by avail_date) as cumulative_avail_qty from test order by avail_date, size_id;
内容的提问来源于stack exchange,提问作者epipko
相关产品推荐
相关产品推荐

