Sql server 如何从同一列SQL中减去两个值
我正在建立一个程序,当给客户ID时,它将从账户类型1(储蓄)余额中减去账户类型2(信用卡)余额,如果有储蓄账户,它将减去信用卡余额。 (除储蓄余额-信用卡余额=总余额) 我的桌子是这样摆的Sql server 如何从同一列SQL中减去两个值,sql-server,Sql Server,我正在建立一个程序,当给客户ID时,它将从账户类型1(储蓄)余额中减去账户类型2(信用卡)余额,如果有储蓄账户,它将减去信用卡余额。 (除储蓄余额-信用卡余额=总余额) 我的桌子是这样摆的 ID Number Balance AccountType CustomerID ----------------------------------------------------------- 1 2434789 451.23 1
ID Number Balance AccountType CustomerID
-----------------------------------------------------------
1 2434789 451.23 1 1
2 2435656 1425.12 1 2
3 2434789 12.56 2 1
4 4831567 45894.23 2 2
5 8994785 500.00 2 3
6 4582165 243.10 2 4
7 7581462 1567842.21 1 3
8 2648956 1058.63 2 5
9 4582165 4865.12 1 4
10 4186545 481.56 2 6
我已经试着查找这个来获得一些指导,但我发现的一切都没有帮到我。如果有人能解释或向我展示我需要做什么,那就太好了,这是我作业中唯一坚持的部分。您将表连接到它自己,连接的每一侧只包括适当的帐户类型记录:
SELECT coalesce(s.CustomerID, cc.CustomerID) CustomerID
,coalesce(s.Number, cc.Number) Number
coalesce(s.Balance,0) - coalesce(cc.Balance,0) Balance
FROM (SELECT * FROM [accounts] WHERE AccountType = 2) s
FULL JOIN (SELECT * FROM [accounts] WHERE AccountType = 1) cc on cc.customerID = s.customerID
您可以按
CustomerId
进行分组,并获得储蓄和信贷余额之和
然后,您可以通过以下查询轻松获得总数:
Select
CustomerId,
Saving - Credit
from
(
select
c.CustomerId,
SUM(CASE WHEN AccountType = 1 THEN Balance ELSE 0 END) Saving,
SUM(CASE WHEN AccountType = 2 THEN Balance ELSE 0 END) Credit,
from Customer c
group by c.CustomerId
) cust
你能公布你的预期结果吗?非常感谢,这对我帮助很大。我不得不做一些编辑,但我成功了@冷漠的灯。别担心。如果回答了您的问题,请将其标记为答案:)
Select
CustomerId,
Saving - Credit
from
(
select
c.CustomerId,
SUM(CASE WHEN AccountType = 1 THEN Balance ELSE 0 END) Saving,
SUM(CASE WHEN AccountType = 2 THEN Balance ELSE 0 END) Credit,
from Customer c
group by c.CustomerId
) cust