【发布时间】:2020-04-25 14:12:51
【问题描述】:
我有下表
--------------------------------------------------------
| sell | sell_code| buy | buy_code| date_time |
--------------------------------------------------------
| 100 | usd | 150 | eur | 20/10/2020 09:20
| 50 | gbp | 114 | eur | 20/10/2020 11:20
| 80 | eur | null | null | 20/10/2020 15:40
| null | null | 80 | usd | 21/10/2020 09:20
| 100 | usd | 80 | gbp | 21/10/2020 13:30
--------------------------------------------------------
我想在代码相同时按卖出和买入列对分区求和,卖出金额为“+”,买入金额为“-”
想要这样的结果(mssql 2008+)
-----------------------------------------------------------------------------------
|sell|sell_code| buy |buy_code|date_time ||balance1|b_code1|balance2|b_code2|
-----------------------------------------------------------------------------------
|100 | usd | 150 | eur |20/10/2020 09:20|| 100 | usd |-150 | eur |
|50 | gbp | 114 | eur |20/10/2020 15:40|| 50 | gbp |-264 | eur |
|80 | eur | null| null |20/10/2020 15:40|| -184 | eur | null | null |
|null| null | 80 | usd |21/10/2020 09:20|| null | null | 20 | usd |
|100 | usd | 80 | gbp |21/10/2020 13:30|| 120 | usd | -30 | gbp |
-----------------------------------------------------------------------------------
这样计算
-----------------------------------------------------------------------------------------------------
| sell | sell_code| buy | buy_code| date_time |||balance1 |b_code1|balance2 |b_code2|
-----------------------------------------------------------------------------------------------------
| 100 | usd | 150 | eur | 20/10/2020 09:20|| 100 | usd |-150 | eur |
| 50 | gbp | 114 | eur | 20/10/2020 11:20|| 50 | gbp |(-150)-114 | eur |
| 80 | eur | null | null | 20/10/2020 15:40||(-150-114)+80 | eur | null | null |
| null | null | 80 | usd | 21/10/2020 09:20|| null | null |(100)-80 | usd |
| 100 | usd | 80 | gbp | 21/10/2020 13:30||(100-80)+100 | usd | (50)-80 | gbp |
-----------------------------------------------------------------------------------------------------
有什么想法吗?
【问题讨论】:
-
取决于您拥有的 RDMS。在您的问题中注明(包括版本)
-
请解释计算。它们并不明显。
标签: sql sql-server