Last_Value 返回当前值

Last_Value returning the current value

我无法获得最后一个值,而是它只是在雪花中返回与我下面的代码相同的值 - 有人知道吗?有什么明显的错误吗?

select MNTH, 
       sum_cust, 
       last_value(sum_cust) over (partition by MNTH order by sum_cust desc ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as sum_cust_last
from block_2;

我想你真正想要的是 LAG 之前 MNTH:

的值
SELECT MNTH, 
       sum_cust, 
       LAG(sum_cust) OVER (ORDER BY MNTH) AS sum_cust_last
FROM block_2;

由于某些涉及 window 帧的技术原因,我实际上推荐 first_value() 而不是 last_value()。如果您想要最后一个值,请按月份降序排序并选择第一行:

select MNTH, sum_cust,
       first_value(sum_cust) over (order by MNTH desc
                                   rows between current_row AND UNBOUNDED FOLLOWING
                                  ) as sum_cust_last
from block_2;