需要在和计算中使一些值为负

Jam*_*ett 0 sql sql-server sql-server-2008

我有下表有一个事务列表

ID  FromID   ToId      AMOUNT
1   1        2         10
2   1        3         10
4   1        4         10
5   3        2         3
6   4        2         2
7   4        2         1
8   2        4         2
Run Code Online (Sandbox Code Playgroud)

我想知道获得用户平衡的最佳/最有效的方法.余额将是用户被给予的金额(其中ID是ToId)减去用户给出的金额之和(其中ID是FromId)的总和

有任何想法吗?

提前致谢.

詹姆士

pod*_*ska 6

用一个简单的总和

select SUM(Amount) from
(
select Amount from #t where ToID=@user
union all
select -Amount from #t where FromID=@user
) v
Run Code Online (Sandbox Code Playgroud)

(你可以在一行中做到......

select sum(case @user when ToID then Amount else -Amount end) 
from #t where @user in (ToID, FromID)
Run Code Online (Sandbox Code Playgroud)

但我认为联盟会更有效率)