我在 Teradata 中有一个表如下
记录_id | 子_id | 金额 | seq_no | 总放松 |
---|---|---|---|---|
123 | 0830 | 1.00 | 1 | ? |
123 | 0830 | 3.00 | 2 | ? |
123 | 0830 | 4.00 | 3 | ? |
456 | 0850 | 2.00 | 1 | ? |
456 | 0850 | 1.00 | 2 | ? |
456 | 0850 | 5.00 | 3 | ? |
我想要通过对 record_id 和 sub_id 进行分组并排序 seq_no 来求出 Total_unwind 列中的金额总和。
例如。对于 record_id 123 和 sub_id 830,
对于 seq_no 1,total_unwind 将与 amount 相同。 Total_unwind=1.00
对于 seq_no=2,total_unwind 将为 1.00(之前的 Total_unwind)+ 3.00(当前金额)。 Total_unwind=4.00
对于 seq_no=3,total_unwind 将为 4.00(之前的 Total_unwind)+ 4.00(当前金额)。 Total_unwind=8.00
对于新的 record_id 和 sub_id 集合,应重新开始求和
输出应如下所示:
记录_id | 子_id | 金额 | seq_no | 总放松 |
---|---|---|---|---|
123 | 0830 | 1.00 | 1 | 1.00 |
123 | 0830 | 3.00 | 2 | 4.00 |
123 | 0830 | 4.00 | 3 | 8.00 |
456 | 0850 | 2.00 | 1 | 2.00 |
456 | 0850 | 1.00 | 2 | 3.00 |
456 | 0850 | 5.00 | 3 | 8.00 |
我在 Teradata 中尝试了以下查询
sel record_id,sub_id,amount,seq_no, sum(amount) over (order by sub_id,SEQ_NO ROWS UNBOUNDED PRECEDING ) as total_unwind from table_name
上述查询的输出如下
记录_id | 子_id | 金额 | seq_no | 总放松 |
---|---|---|---|---|
123 | 0830 | 1.00 | 1 | 1.00 |
123 | 0830 | 3.00 | 2 | 4.00 |
123 | 0830 | 4.00 | 3 | 8.00 |
456 | 0850 | 2.00 | 1 | 10.00 |
456 | 0850 | 1.00 | 2 | 11.00 |
456 | 0850 | 5.00 | 3 | 16.00 |
它不断地求和,直到不需要为止。 有人可以帮忙在 record_id,sub_id 上使用 group by