Sql 如何在teradata中实现滞后功能。
输入: 输出: 我希望输出如下图所示 在输出图像中,4 In‘behind’被评估为tot_cnt-tot,“behind”中的后续数字,例如:2被评估为lag(behind)-tot&只要‘排名’保持不变,即使‘behind’也应该保持不变 有谁能帮我在teradata中实现这一点吗?您似乎想要:Sql 如何在teradata中实现滞后功能。,sql,teradata,lag,Sql,Teradata,Lag,输入: 输出: 我希望输出如下图所示 在输出图像中,4 In‘behind’被评估为tot_cnt-tot,“behind”中的后续数字,例如:2被评估为lag(behind)-tot&只要‘排名’保持不变,即使‘behind’也应该保持不变 有谁能帮我在teradata中实现这一点吗?您似乎想要: select *, (select count(*) from table t1 where t1.rank > t.rank
select *, (select count(*)
from table t1
where t1.rank > t.rank
) as behind
from table t;
我将总结数据并做以下工作:
select id, max(tot_cnt), max(tot),
(max(tot_cnt) -
sum(max(tot)) over (order by id rows between unbounded preceding and current row)
) as diff
from t
group by id;
这为每个
id
提供了一行,这对我来说更有意义。如果您想要原始数据行(无论如何都是重复的),您可以将其连接回您的表。如果tot\u cnt
在不同的行中有不同的值,该怎么办?@trincot我稍后会尝试检查,但是首先我需要在这里使用lag函数..也许我会等你先澄清一下,然后再花时间:@trincot tot_cnt实际上是observationsLAG实现对前一行数据的访问的总数,但我不知道这与你的预期结果如何匹配。