| TR_DATE | ACC_NAME | 型別 | 數量 |
|---|---|---|---|
| 01-01-2017 | 愛維斯 | 鉻 | 60000 |
| 02-01-2017 | 愛維斯 | D B | 8000 |
| 03-01-2017 | 愛維斯 | 鉻 | 8000 |
| 04-01-2017 | 愛維斯 | D B | 5000 |
| 01-01-2017 | 紐普爾 | 鉻 | 10000 |
| 02-01-2017 | 紐普爾 | D B | 8000 |
| 03-01-2017 | 紐普爾 | 鉻 | 8000 |
上述資料的預期結果是
| TR_DATE | ACC_NAME | 型別 | 數量 | 平衡 |
|---|---|---|---|---|
| 01-01-2017 | 愛維斯 | 鉻 | 60000 | 60000 |
| 02-01-2017 | 愛維斯 | D B | 8000 | 52000 |
| 03-01-2017 | 愛維斯 | 鉻 | 8000 | 60000 |
| 04-01-2017 | 愛維斯 | D B | 5000 | 55000 |
| 01-01-2017 | 紐普爾 | 鉻 | 10000 | 10000 |
| 02-01-2017 | 紐普爾 | D B | 8000 | 2000 |
| 03-01-2017 | 紐普爾 | 鉻 | 8000 | 10000 |
uj5u.com熱心網友回復:
您可以使用function的決議版本sum(),使用 case 運算式將借記項轉換為負數,并使用視窗子句將總和應用于當前行日期之前的金額:
select tr_date, acc_name, type, amount,
sum(case when type = 'DB' then -1 else 1 end * amount)
over (partition by acc_name order by tr_date) as balance
from passbook
order by acc_name, tr_date
| TR_DATE | ACC_NAME | 型別 | 數量 | 平衡 |
|---|---|---|---|---|
| 2017-01-01 | 愛維斯 | 鉻 | 60000 | 60000 |
| 2017-01-02 | 愛維斯 | D B | 8000 | 52000 |
| 2017-01-03 | 愛維斯 | 鉻 | 8000 | 60000 |
| 2017-01-04 | 愛維斯 | D B | 5000 | 55000 |
| 2017-01-01 | 紐普爾 | 鉻 | 10000 | 10000 |
| 2017-01-02 | 紐普爾 | D B | 8000 | 2000 |
| 2017-01-03 | 紐普爾 | 鉻 | 8000 | 10000 |
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/534368.html
標籤:数据库甲骨文
