Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何从同一列SQL中减去两个值_Sql Server - Fatal编程技术网

Sql server 如何从同一列SQL中减去两个值

Sql server 如何从同一列SQL中减去两个值,sql-server,Sql Server,我正在建立一个程序,当给客户ID时,它将从账户类型1(储蓄)余额中减去账户类型2(信用卡)余额,如果有储蓄账户,它将减去信用卡余额。 (除储蓄余额-信用卡余额=总余额) 我的桌子是这样摆的 ID Number Balance AccountType CustomerID ----------------------------------------------------------- 1 2434789 451.23 1

我正在建立一个程序,当给客户ID时,它将从账户类型1(储蓄)余额中减去账户类型2(信用卡)余额,如果有储蓄账户,它将减去信用卡余额。 (除储蓄余额-信用卡余额=总余额)

我的桌子是这样摆的

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