Баланс вычисляют получая какие то странные цифры посередине
У меня есть этот код для расчета баланса но он плохо работает beacouse иногда он плюсуется somtimes следующее значение например я покажу вам код и вывод plz помогите мне решить эту проблему
Выход:
ID Date Operation Amount Balance 2979 07-03-2018 Cash Out 6.9 -44.88 2989 09-03-2018 Cash In 19 -25.88 2980 09-03-2018 Cash In 8.09 -17.79 2996 09-03-2018 Cash Out 98.57 -25.88 2986 09-03-2018 Cash Out 1.3 -27.18 2988 09-03-2018 Cash Out 4 -31.18 2981 09-03-2018 Cash Out 8.09 -129.75
Вот что я вижу, когда баланс равен -44.88 это плюс 19 и получение 25.88 это нормально, тогда -25.88 плюс 8.09 и получение -17.79 это правда, но тогда он должен быть минус 98.57, но вместо этого он Минус 8.09 prev one можете ли вы мне помочь?
Что я уже пробовал:
DECLARE @Datest DATE declare @dateend DATE SET @Datest='2018-02-1 00:00:00' SET @dateend='2018-12-14 06:54:42' DECLARE @DateStart DATE='2017-01-01 00:00:00'; WITH cte AS (SELECT id = Row_number() OVER(ORDER BY date,(CASE WHEN Op_Type_Id=1 OR Op_Type_Id=3 OR Op_Type_Id=5 THEN 1 ELSE 0 END)DESC), x.ID AS iid, x.Date AS [Date],dbo.Op_type.Type as Operation,Op_Type_Id, dbo.Source.Source as Source,j.Source AS Recipient, dbo.Expence_Items.Name AS Purpose,dbo.Expence_Items.Name_En AS Purpose_EN, dbo.Expence_Items.Name_Rus AS Purpose_Ru,dbo.Executor.Name AS Executor, x.Value as AmountGel, x.Note FROM [dbo].[Reestr] x LEFT JOIN dbo.Source AS j ON x.Sender_Id2=j.ID LEFT JOIN dbo.Expence_Items ON x.Expence_Id = dbo.Expence_Items.ID LEFT OUTER JOIN dbo.Source ON x.Sender_Id = dbo.Source.ID LEFT JOIN dbo.Executor ON x.Executor_Id = dbo.Executor.ID LEFT OUTER JOIN dbo.Op_type ON x.Op_Type_Id = dbo.Op_type.ID WHERE DATE >= @DateStart) SELECT id,FORMAT([Date],'dd-MM-yyyy') AS [Date],Operation,Source,Amount, Balance= (select(sum(case when Op_Type_Id IN (1,3,5) then CAST(Amount AS NUMERIC(6,2)) when Op_Type_Id IN(2,4,6) then(0-CAST(Amount AS NUMERIC(6,2))) END)) FROM cte WHERE id < a.id or id=a.id ),Note FROM cte AS a WHERE ([Date]>=@Datest AND [Date]<=@dateend) ORDER BY FORMAT([Date],'yyyy-MM-dd')
CHill60
"Где ID &ЛТ; а.ID или идентификатор=а.ИД ),обратите внимание" - что производит синтаксическую ошибку. Что такое фактический код?
GTR0123
вы можете сделать где ID &ЛТ; а.код ) есть.идентификатор с идентификатором КТР
CHill60
Прошу прощения, что пропустил подзапрос.