这是我的桌子。
pk | transactionID
| description
| transactionDate
| transactionAmount
| accountRecieve
| accountSend
这些是我的专栏。我需要通过查询找到给定accountNumber的余额。为此,我必须先对accountSend = 127的transactionAmount求和,然后再使accountRecieve = 127的SUM transactionAmount求和,然后从第二个总和中减去第一个总和,并在一个结果中显示它。
我可以解释它,但是我不知道如何在SQL中执行它。谁能帮忙。
答案 0 :(得分:0)
一个选项使用条件聚合:
SELECT
SUM(IIF(accountReceive = 127, transactionAmount, 0)) -
SUM(IIF(accountSend = 127, transactionAMount, 0)) AS diff
FROM yourTable;
想法是只对整个表进行一次传递,使用两个条件对交易金额求和。
答案 1 :(得分:0)
您也可以使用switch
来表达这一点:
SELECT SUM(SWITCH(accountReceive = 127, transactionAmount
accountSend = 127, - transactionAMount, 0,
1=1, 0
)
) AS diff
FROM yourTable;
这仅使用一个SUM()
,更类似于在其他数据库中使用CASE
。