Zer*_*One 2 sql oracle window-functions
我有以下表格:
---------------------
| No1 | No2 | Amount
---------------------
| A | B | 10 |
| C | D | 20 |
| B | A | 30 |
| D | C | 40 |
---------------------
Run Code Online (Sandbox Code Playgroud)
我希望通过两列(No1,No2)对分区求和,但是当两列中的值发生变化时,它也应该分组.例子是:AB = BA
这将是我的预期结果:
-----------------------------------------
| No1 | No2 | Sum(Amount) over partition
-----------------------------------------
| A | B | 40 |
| C | D | 60 |
| B | A | 40 |
| D | C | 60 |
-----------------------------------------
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
使用least和greatest.
select no1,no2,sum(amount) over(partition by least(no1,no2),greatest(no1,no2)) as total
from tbl
Run Code Online (Sandbox Code Playgroud)