MS SQL Server中的递归函数比较值

Posted

tags:

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

我有一个包含三列的表。一个是MemberID,另一列是他们获得的分数,另一列是他们获得分数的日期。

我想创建一个结果集,该结果集将向我显示所有随着时间推移而提高其得分的成员的列表。

所以我认为为此,递归表将是答案。但是我不知道如何创建它。

这里是我的列和一些值的列表:

MemberID    Score    Dates
1           3        12/31/2019
1           2        01/31/2020
1           1        02/31/2020
2           4        12/31/2019
2           6        01/31/2020
2           10       02/31/2020
3           4        12/31/2019
3           6        01/31/2020
3           5        02/31/2020

在这种情况下,我的结果集将仅包括:

MemberID 2,因为它是唯一随时间改进的成员。

答案

具有LEAD()窗口功能:

select MemberID
from (
  select MemberID, lead(score) over (partition by MemberID order by Dates) - score dif
  from tablename  
) t   
group by MemberID
having min(dif) > 0

以上是关于MS SQL Server中的递归函数比较值的主要内容,如果未能解决你的问题,请参考以下文章

缓存用户定义函数的输出(ms sql server)

MS SQL Server 2008 中的空值处理

使用属性值从 MS SQL Server 中的 JSON blob 中检索特定值?

MS SQL server中的isnull函数

MS SQL Server 中的标量 UDF 在查询中仅返回一个值

MS SQL Server 中的动态数据透视