SQL Server余额计算
问题描述:
我在计算余额,但某些值的余额不正确。我不知道为什么!SQL Server余额计算
SELECT
Date,
ID,
VALUE,
Op_Type_Id,
(SELECT
SUM(CASE
WHEN Op_Type_Id = 1 OR Op_Type_Id = 3 OR Op_Type_Id = 5
THEN y.Value
WHEN Op_Type_Id = 2 OR Op_Type_Id = 4 OR Op_Type_Id = 6
THEN (0 - value)
END)
FROM dbo.Reestr y
WHERE x.date >= y.date AND x.id >= y.ID) AS BalanceGel
FROM
dbo.Reestr x
下面是我对我怎么了计算,但输出错误在某些情况下
Date VALUE Op_Type_Id BalanceGel
--------------------------------------------
2017-04-21 470 2 -470
2017-05-09 50 1 -420
2017-04-30 60 2 -530
2017-05-09 860 1 380
2017-05-29 15 1 395
2017-05-18 78 2 302
答
原因你的价值显示出来,因为他们仅仅是由于线路
WHERE x.date >= y.date AND x.id >= y.ID
代码
特别是日期之间的条款>=
。所以在线路
2017-05-09 860 1 380
当我们遇到内部查询,内侧查询WHERE
部分得到其日期是这样的,他们是< = 2017-05-09
所有记录。满足这个条件的记录是
2017-04-21 470 2
2017-05-09 50 1
2017-04-30 60 2
2017-05-09 860 1
与Op_type_id
= 1添加值和减去那些Op_type_id
= 2 我们得到-470+50-60+860
= 380
;这就是你所看到的。
+0
我做了程序多数民众赞成在工作,但我现在试图把它在选择:(但有点我不能做到这一点 – Wuhu
请解释您的输出中哪个值是错误的,以及什么应该是正确的值。也提供用作输入的数据。 – DhruvJoshi
类型为2时必须 - 如果类型= 1,那么总结和看,当-530 + 860 = geting错误的数字380必须是330:D和当395-78 geting 302 – Wuhu
请看我的回答 – DhruvJoshi