如何用SQL生成税务报告的交易匹配记录?是否需改用Python?
股票交易税务匹配:SQL实现还是Python迭代?
交易历史表结构
CREATE TABLE trade ( trade_id INT PRIMARY KEY, stock_id INT NOT NULL, date DATE NOT NULL, sell BOOLEAN NOT NULL, shares INT NOT NULL, usd_total DECIMAL(10, 2) NOT NULL );
需求说明
需要查询交易记录生成税务报告,结果格式如下:
| stock_id | buy_date | sell_date | shares | buy_usd_total | sell_usd_total |
|---|---|---|---|---|---|
核心逻辑:每笔卖出交易需匹配一条或多条买入记录,先消耗完前一条买入的股份,再匹配下一条买入记录。
示例交易记录
| trade_id | stock_id | date | sell | shares | usd_total |
|---|---|---|---|---|---|
| 1 | 1 | 2021-01-01 | 0 | 2 | 100.00 |
| 2 | 1 | 2021-01-02 | 0 | 2 | 120.00 |
| 3 | 1 | 2021-01-03 | 1 | 3 | 300.00 |
| 4 | 1 | 2021-01-04 | 1 | 1 | 150.00 |
期望输出结果
| stock_id | buy_date | sell_date | shares | buy_usd_total | sell_usd_total |
|---|---|---|---|---|---|
| 1 | 2021-01-01 | 2021-01-03 | 2 | 100.00 | 200.00 |
| 1 | 2021-01-02 | 2021-01-03 | 1 | 60.00 | 100.00 |
| 1 | 2021-01-02 | 2021-01-04 | 1 | 60.00 | 150.00 |
疑问
这个需求能否通过SQL实现?我尝试梳理逻辑,但很难跟踪买卖后的剩余股份,应该继续用SQL实现还是改用Python迭代方法?
内容的提问来源于stack exchange,提问作者Mr. Ran Dum
相关产品推荐
相关产品推荐

