Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在teradata中实现滞后功能。_Sql_Teradata_Lag - Fatal编程技术网

Sql 如何在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

输入:

输出:

我希望输出如下图所示

在输出图像中,4 In‘behind’被评估为tot_cnt-tot,“behind”中的后续数字,例如:2被评估为lag(behind)-tot&只要‘排名’保持不变,即使‘behind’也应该保持不变

有谁能帮我在teradata中实现这一点吗?

您似乎想要:

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实现对前一行数据的访问的总数,但我不知道这与你的预期结果如何匹配。