我得到2行(9500)为111的结果,请您建议正确的方法,我需要像,平衡=(总和买入-总和卖出)
# Table T1#
+---------+--------+------+------+
| ACCOUNT | TRANS | AMT | YEAR |
+---------+--------+------+------+
| 111 | BOUGHT | 8000 | 2019 |
| 111 | BOUGHT | 2000 | 2019 |
| 111 | SOLD | 500 | 2019 |
| 222 | BOUGHT | 6000 | 2018 |
| 222 | SOLD | 300 | 2018 |
+---------+--------+------+------+
查询
SELECT (A.BOUGHTs - B.SOLDs) AS BALANCE
FROM T1
INNER JOIN
(SELECT SUM(AMT) AS BOUGHTs
FROM T1
WHERE TRANS = 'BOUGHT'
) A
ON T1.ACCOUNT = A.ACCOUNT
INNER JOIN
(SELECT SUM(AMT) AS SOLDs
FROM T2
WHERE TRANS = 'SOLD'
) B
ON T1.ACCOUNT = B.ACCOUNT
WHERE T1.ACCOUNT = 111
AND T1.YEAR = 2019
2条答案
按热度按时间ha5z0ras1#
可以使用条件聚合:
如果您只需要一个帐户,您可以添加一个
where
条款:dly7yett2#
重写查询将如下所示: