我有一个下表:
贸易ID | 股票代码 | 日期 | 数量
此表包含我进行的所有交易。我想知道我上周赚了多少,以及我在每只股票上的总金额。
股票代码 | 数量_in_lst_week | 剩余金额
例如:
1 | A | 2013-01-01 | 200
2 | A | 2013-06-25 |-100
3 | B | 2013-06-25 | 100
4 | C | 2013-04-01 | 100
今天是我们当地时间 2013 年 6 月 26 日,所以我应该得到:
A |-100 | 100
B | 100 | 100
C | 0 | 100
我认为这不是一件难事,但我写了一个复杂的子查询,如下所示:
SELECT lst_week.stock_code,
lst_week.amount_in_lst_week,
total.amount_remaining
FROM (SELECT t1.stock_code,
SUM(COALESCE(t2.amount, t2.amount, 0)) AS amount_in_lst_week
FROM trade t1
LEFT JOIN trade t2 ON t1.trade_id = t2.trade_id
AND TO_DAYS(NOW()) - TO_DAYS(t1.date) <= 7
GROUP BY t1.stock_code) lst_week,
(SELECT stock_code, SUM(amount) AS amount_remaining
FROM trade
GROUP BY stock_code) total
WHERE lst_week.stock_code = total.stock_code;
它有效,但我想知道是否可以在没有子查询的情况下做到这一点?还是有更简单的方法?谢谢。