Sql 列的值取决于所有以前的值
在查询表时,我正在努力计算列(c3)。事实上,当前行的c3值取决于(c3)的所有先前值 例如,原始3的c3值将取决于raw2的c3,后者取决于raw1的c3,依此类推Sql 列的值取决于所有以前的值,sql,oracle,window-functions,cumulative-sum,Sql,Oracle,Window Functions,Cumulative Sum,在查询表时,我正在努力计算列(c3)。事实上,当前行的c3值取决于(c3)的所有先前值 例如,原始3的c3值将取决于raw2的c3,后者取决于raw1的c3,依此类推 | c1 | c2 | c3 | |----|-------|----------| | 1 | 1 | |<-- row1 | 2 | 6 | |<-- row2 | 3 | 2 | |<-- row3 |
| c1 | c2 | c3 |
|----|-------|----------|
| 1 | 1 | |<-- row1
| 2 | 6 | |<-- row2
| 3 | 2 | |<-- row3
| 4 | 10 | |<-- row4
| c1 | c2 | c3 |
|----|-------|----------|
|1 | 1 | |这是一个窗口总和。假设列c1
定义了行的顺序,则为:
select
c1,
c2,
sum(c1 + c2) over(order by c1) c3
from mytable
这是一个窗口总数。假设列c1
定义了行的顺序,则为:
select
c1,
c2,
sum(c1 + c2) over(order by c1) c3
from mytable
如果我想用另一个函数来代替sum,逻辑是一样的吗?让我们假设cocat字符串,如果我有字符串等等…@Blood HaZaRd:是的,逻辑与其他窗口函数相同。对于字符串,您可以在(…)上使用listag(…)
@GMB。我认为listagg()
不适用于orderby
。如果我想用另一个函数替换sum,它的逻辑会是相同的吗?让我们假设cocat字符串,如果我有字符串等等…@Blood HaZaRd:是的,逻辑与其他窗口函数相同。对于字符串,您可以在(…)上使用listag(…)
@GMB。我认为listagg()
不适用于orderby
。