如何将上一行的值与当前行值 Teradata 相加

问题描述 投票:0回答:0

我在 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

sum row teradata teradata-sql-assistant teradatasql
© www.soinside.com 2019 - 2024. All rights reserved.