SUM函数问题中的SQL连接

时间:2016-01-04 17:13:53

标签: sql join sum

我希望SUM t.amount,w.bStake和w.lStake(有条件地)

来自交易t和投注w。

金额应该总是总结一下,而后退和利润之间应该是一个条件。

If w.Profit is positiv -> t.Amount + w.Back

If w.Profit is negativ -> t.Amount + w.Profit

我在此之前使用的代码如下所示:

SELECT 
  b.Bookie, 
  (SELECT SUM(t.Amount) FROM Transactions t WHERE t.Bookie = b.id)
FROM Bookie b

我的表是:

Bookie:
------------
Id : int (Primary Key)
Bookie : varchar


Transactions:
-------------------
Id : int (Primary Key)
Date : date
Bookie : int (Foreign Key)
Amount : decimal 


Wagers:
Id : int (Primary Key)
Profit : decimal
Back : decimal
Bookie : int (Foreign Key)

我该如何解决这个问题?或者只有重构我的数据库才有可能? 非常感谢。

1 个答案:

答案 0 :(得分:1)

你需要加入这三个表,然后你可以用case来得到总和:

SELECT 
  b.Bookie,
  SUM(CASE mySum WHEN If w.Profit >= 0 then t.Amount + w.Back
             ELSE t.Amount + w.Profit)
FROM Transactions as t inner join Bookie as b on t.Bookie = b.id
INNER JOIN Wagers as w on b.id = w.bookie