SQL:两列分区

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)

有任何想法吗?

Vam*_*ala 5

使用leastgreatest.

select no1,no2,sum(amount) over(partition by least(no1,no2),greatest(no1,no2)) as total
from tbl
Run Code Online (Sandbox Code Playgroud)