вы можете сделать это с помощью INNER JOIN
при суммировании строк, я использую IIF для установки текущей строки на ноль в сумме, потому что я не хочу включать это в проверку [112 ]
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;
Необходимо будет добавить атрибут для каждого метода.
Я понимаю потребность использовать методы здесь. В то время как это верно, что эти методы, вероятно, не изменяют состояние, использование метода намекает на длинную/исходящую операцию, которая, вероятно, имеет место через методы Класса обслуживания.
Разве Вы не можете переименовать свои методы к LoadProjectSettings?
Иначе необходимо будет действительно добавить атрибут к каждому методу или отключить правило.
Необходимо будет применить его к каждому методу, к сожалению.
Кроме того, я не вижу оснований здесь, чтобы иметь Ваш Получать методы. Почему не только имеют свойства только для чтения, по крайней мере, для ProjectsDashboard и IList<ProjectInfo>
. Они не кажутся мне реализациями, которые изменили бы состояние реализации и должны, вероятно, быть свойствами так или иначе.
ProjectSettings должен также возвратить индексируемый набор, которым это казалось бы также.