首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server LAST_VALUE和LEAD

Server LAST_VALUE和LEAD
EN

Stack Overflow用户
提问于 2020-04-17 14:40:23
回答 1查看 706关注 0票数 0

这里所示,Server中的LAST_VALUE函数需要指定一个框架(例如。( ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)或默认值将是当前行的第一行。对于LEAD来说,情况似乎并非如此。这两个函数都是“前瞻性”的,那么是否有任何文档显示的不一致的原因呢?

一切都如期而至,我只是想对我多年来一直使用的功能有一个更扎实的理解。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-17 15:00:21

LAST_VALUE的默认窗口框架是RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW,因此,如果您希望包含所有行,则需要使用指定的窗口fra,e。

在本例中,DifferenceFromLastQuarter列中返回的非零值需要子句“当前行与无界跟随之间的范围”,如下所示。默认范围是“前一行和当前行之间的范围”。

因此,如果没有ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING,那么您将得到带有LAST_VALUE的当前行,因为这是默认窗口框架中的最后一行。

另一方面,LEAD不使用ROWSRANGE BETWEEN,因此可以访问整个数据集范围。尝试使用ROWS BETWEEN会产生一个错误:

代码语言:javascript
复制
SELECT V.I,
       LEAD(V.I) OVER (ORDER BY V.I ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) AS L
FROM (VALUES(1),(2),(3))V(I);

函数'LEAD‘可能没有窗口框。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61274247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档