我創建了庫存表並使用您的示例數據填充它。 這是SQL的代碼。請嘗試當你問幫助在未來分享這樣的元數據:)
create column table InventoryItems
(
Department varchar(10),
Product varchar(10),
Date date,
Quantity int,
Indicator varchar(10)
);
insert into InventoryItems select 'D001','P001','20170701',1000,'ADD' from dummy;
insert into InventoryItems select 'D001','P001','20170710',2000,'ADD' from dummy;
insert into InventoryItems select 'D001','P001','20170715',3000,'ADD' from dummy;
insert into InventoryItems select 'D001','P001','20170716',2000,'ADD' from dummy;
insert into InventoryItems select 'D001','P001','20170718',5500,'SUBTRACT' from dummy;
insert into InventoryItems select 'D001','P002','20170712',3000,'ADD' from dummy;
insert into InventoryItems select 'D001','P002','20170714',2000,'ADD' from dummy;
insert into InventoryItems select 'D001','P002','20170715',4000,'SUBTRACT' from dummy;
樣表後和數據準備好了,我按照用於老化SQLScript代碼。因爲它也許很難理解和遵循的代碼,我分享你的問題,並在stock aging SQL calculation on SAP HANA database
提供了詳細的解決方案,這裏是SQL代碼來幫助你完成你的要求
with Ins as (
select
row_number() over (partition by Product order by date) as AddId,
*,
sum(Quantity) over (partition by Product order by Date rows unbounded preceding) as sumIn,
sum(Quantity) over (partition by Product order by Date desc rows unbounded preceding) as sumX
from InventoryItems
where
Indicator = 'ADD'
), Outs as (
select
row_number() over (partition by Product order by date) as AddId,
*,
sum(Quantity) over (partition by Product order by Date rows unbounded preceding) as sumOut
from InventoryItems
where
Indicator = 'SUBTRACT'
), Inv as (
select
ins.Product, max(sumIn) - max(ifnull(sumOut,0)) as inv
from Ins
left join Outs
on ins.Product = outs.Product
group by ins.Product
), calc as (
select
Ins.*,
Inv.inv,
inv-sumx as diff
from Ins
left join Inv
on ins.Product = inv.Product
)
select
Department, Product, Date,
case when diff > 0 then quantity else quantity-abs(diff) end as Quantity,
DAYS_BETWEEN(Date,current_date) as AgeingInDays
from (
select *, 1 as rn from calc where diff >= 0
union all
(
select * from (
select
*, row_number() over (partition by Product order by diff desc) as rn
from calc
where diff < 0
) t where rn = 1
)
)
order by Product, AddId
這是輸出上面的SQL塊執行 
我希望它能幫助,
人的?請幫忙 –