SQL Server ->> FIRST_VALUE和LAST_VALUE函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server ->> FIRST_VALUE和LAST_VALUE函数相关的知识,希望对你有一定的参考价值。

两个都是SQL SERVER 2012引入的函数。用于返回在以分组和排序后取得最后一行的某个字段的值。很简单两个函数。ORDER BY字句是必须的,PARITION BY则是可选。

似乎没什么好说的。结果在测试LAST_VALUE函数的时候有个问题。

下面是测试脚本

;with t as (SELECT TOP 100 ROW_NUMBER() OVER(ORDER BY column_id) as num
FROM sys.columns)

select
num,
num/10 as grp_factor,
first_value(num) over(partition by num/10 order by num) as first_value,
last_value(num) over(partition by num/10 order by num) as last_value
from t

 

按照我的预测,0-9的FIRST_VALUE会返回1,而LAST_VALUE会返回9。然而情况却是FIRST_VALUE确实是返回1了。可是,LAST_VALUE却是返回了和本身NUM字段相同的值。没有弄明白怎么回事。似乎语句也没有问题。

技术分享

以上是关于SQL Server ->> FIRST_VALUE和LAST_VALUE函数的主要内容,如果未能解决你的问题,请参考以下文章

SQL bigquery:上个月的布尔列

Azure SQL 数据仓库计算列错误

在 PL/SQL 中将游标数据提取到数组中

SQL SELF 和 INNER JOINS 在一个查询中

Rails/SQL:如何在特定 id 上查找最频繁的列值

译第7节---映射继承策略