вы можете сделать это с помощью внутреннего соединения
при суммировании строк я использую IIF, чтобы установить текущую строку в ноль в сумме, потому что я не хочу включать это в проверку
begin try drop table #Phistory end try begin catch end catch;
begin try drop table #inventory end try begin catch end catch;
SELECT 1234 SKU,5 Quantity, cast('20190101' as date) [date] into #Phistory;
INSERT #Phistory (SKU, Quantity,[date]) VALUES (1234,3,'20181201'), (1234,9,'20181101'),(1234,4,'20181001'),(1234,12,'20180901'),(1235,3,'20181201'), (1235,9,'20181101'),(1235,4,'20181001'),(1235,12,'20180901'),(1235,500,'20180801'),(1235,50,'20180601');
select 1234 SKU, 10 quantity into #inventory;
insert #inventory values(1235,99);
SELECT p1.SKU,
p1.Quantity,
p1.[Date],
SUM(p2.quantity) RunningTotal
FROM #Phistory p1
JOIN #PHistory p2
ON p1.SKU = p2.sku and p2.date >= p1.date
GROUP BY p1.SKU,
p1.Quantity,
p1.[Date]
HAVING SUM(IIF(p1.date = p2.date , 0 , p2.quantity))
<= (SELECT inv.quantity from #inventory inv where inv.sku = p1.sku)
order by p1.sku,p1.date DESC;