Mostafa Salama S Ответов: 0

У меня большая проблема с средневзвешенным SQL запросом


Привет ,
Пожалуйста, помогите мне с моей проблемой

у меня есть такой запрос

DEclare @ID as int = '96';
DEclare @StoreID as int = '1';
DEclare @Add_Units as int = (SELECT [Add_Units] FROM Item WHERE [ID] = @ID);
DEclare @Units as int = (SELECT [Units] FROM Item WHERE [ID] = @ID);
DEclare @Add_Units_Count as int = (SELECT [Add_Units_Count] FROM Item WHERE [ID] = @ID);
IF OBJECT_ID('tempdb..#TempStore') IS NOT NULL DROP Table #TempStore;
WITH RET AS 
(
SELECT * FROM Store_Entery WHERE [ItemID] = @ID AND [StoreID] = @StoreID AND ([Type] = 'Begin' OR [Type] = 'Pay' OR [Type] = 'Refanded' OR [Type] = 'AzenEdafa' OR [Type] = 'AzenSarfRefand' OR [Type] = 'TaswiaStoresPlus')
Union ALL
SELECT * FROM Store_Entery WHERE [ItemID] = @ID AND [StoreID] = @StoreID AND ([Type] = 'Invoices' OR [Type] = 'RPay' OR [Type] = 'AzenEdafaRefand' OR [Type] = 'AzenSarf' OR [Type] = 'TaswiaStoresMins' OR [Type] = 'AzenEdafaRefand')
)
SELECT (CASE When ([Type] = 'Begin') THEN 0 ELSE Row_Number() OVER (ORDER BY @@Rowcount)END) AS IDO,* Into #TempStore FROM RET ORDER BY [Date],@@Rowcount ASC 

SELECT 
SS.IDO,
(Case When @Add_Units != 0 THEN 
(
(SELECT (SUM(ISNULL(SBO.[PayAmountTotal], 0)) + (SUM(ISNULL(SBO.[PayAmountTotalS], 0)))) AS Expr1 FROM #TempStore SBO WHERE (SBO.IDO <= SS.IDO) AND (SBO.[ItemID] = SS.ItemID) AND (SBO.[Type] = 'Begin' OR SBO.[Type] = 'Pay' OR SBO.[Type] = 'Refanded' OR SBO.[Type] = 'AzenEdafa' OR SBO.[Type] = 'AzenSarfRefand' OR SBO.[Type] = 'TaswiaStoresPlus') AND SBO.StoreID = SS.StoreID) 
-
(((SELECT (SUM(ISNULL(SBO.[PayAmountTotal], 0)) + (SUM(ISNULL(SBO.[PayAmountTotalS], 0)))) AS Expr1 FROM #TempStore SBO WHERE (SBO.IDO <= SS.IDO) AND (SBO.[ItemID] = SS.ItemID) AND (SBO.[Type] = 'Begin' OR SBO.[Type] = 'Pay' OR SBO.[Type] = 'Refanded' OR SBO.[Type] = 'AzenEdafa' OR SBO.[Type] = 'AzenSarfRefand' OR SBO.[Type] = 'TaswiaStoresPlus') AND SBO.StoreID = SS.StoreID) 
/ (SELECT (((SUM(ISNULL(SBO.Plus,0)) + SUM(ISNULL(SBO.PlusT,0)))) / Cast(@Add_Units_Count AS int))
FROM #TempStore SBO WHERE (SBO.IDO <= SS.IDO) AND (SBO.[ItemID] = SS.ItemID) AND SBO.StoreID = SS.StoreID)) 
*
(ISNULL((SELECT (((SUM(ISNULL(SBO.Mins,0)) + SUM(ISNULL(SBO.MinsT,0)))) / Cast(@Add_Units_Count AS int))
FROM #TempStore SBO WHERE (SBO.IDO <= SS.IDO) AND (SBO.[ItemID] = SS.ItemID) AND SBO.StoreID = SS.StoreID) ,0)))
)
/ 
(ISNULL((SELECT (((SUM(ISNULL(SBO.Plus,0)) + SUM(ISNULL(SBO.PlusT,0))) - (SUM(ISNULL(SBO.Mins,0)) + SUM(ISNULL(SBO.MinsT,0)))) / Cast(@Add_Units_Count AS int))
FROM #TempStore SBO WHERE (SBO.IDO <= SS.IDO) AND (SBO.[ItemID] = SS.ItemID) AND SBO.StoreID = SS.StoreID) ,0))
END) AS Expr22,
*
FROM #TempStore SS LEFT OUTER JOIN
Item AS IT ON IT.ID = SS.ItemID LEFT OUTER JOIN
Units AS UI ON IT.Units = UI.ID LEFT OUTER JOIN
Units AS US ON IT.Add_Units = US.ID 
ORDER BY SS.IDO ASC


я пытаюсь получить средневзвешенное значение не могу понять как я это делаю префект
мне нужно получить всю стоимость покупок
И которые должны снизить себестоимость продаж
и получите последнюю стоимость, чтобы разделить ее на Ваш баланс
чтобы получить последнее среднее значение
но я не экономлю на продажах
мне нужно получить стоимость от последнего среднего
теперь моя проблема заключается в следующем
после того, как товарный запас не
в среднем это номера или null
это теперь проблема, но реальная проблема после того, как я сделаю новые покупки
он дал мне неправильное среднее

это фото из запросов

[^]

последняя строка в expr22 должна быть 130 а не 120
пожалуйста, помогите мне

Что я уже пробовал:

большая проблема пожалуйста помогите мне
моя проблема с средневзвешенным sql-запросом :(

0 Ответов