我试图把序列ID应该从当前日期开始,然后向后,应该只限制到5行。我不能做的日期,因为有时间有失踪的日期行,所以我仍然要按照当前日期的任何日期是下一个倒退
我已经提出了一个查询,但它似乎并没有真正开始与当前日期向后。我还能做什么?
SELECT *,
ROW_NUMBER() over (partition by employee_id order by date rows 5 preceding exclude current row)
from employee table
字符串
的数据
我试图把序列ID应该从当前日期开始,然后向后,应该只限制到5行。我不能做的日期,因为有时间有失踪的日期行,所以我仍然要按照当前日期的任何日期是下一个倒退
我已经提出了一个查询,但它似乎并没有真正开始与当前日期向后。我还能做什么?
SELECT *,
ROW_NUMBER() over (partition by employee_id order by date rows 5 preceding exclude current row)
from employee table
字符串
的数据
2条答案
按热度按时间i7uq4tfw1#
请尝试以下查询:
示例数据:
临时表:
字符串
样本数据:
型
查询:
型
测试结果:
的数据
h7wcgrx32#
我认为您还需要列出employee列,例如employee id(您做了
select *
)。如果是这样,你需要这样的东西:字符串
在横向连接中,您可以获得每个组的最后5个日期,然后对其进行迭代。
Fiddle
此外,还有一个不同的版本:
型
为了比较它们,我增加了数据量,您可以看到使用fiddle的两个查询的解释输出的比较。
简而言之,第二次查询更快。
注:答案中有错误,已修复。