TSQL - 每组最多?

时间:2018-03-14 17:29:21

标签: tsql sql-server-2016

我有一个看起来像这样的表:

GroupID   UserID    Value
1         1         10
1         2         20
1         3         30
1         4         40
1         5         45
1         6         49
1         7         80
1         8         90
2         1          2
2         2         24
2         3         34
2         4         48
2         5         56
3         1         etc.
3         2
3         3
3         4
4         1
4         2
4         3

我正在尝试编写一个LEAD函数,它会给出每个值之间的中点。为此,我写了以下内容:

SELECT 
  [GroupID]
, [UserID]+0.5
, (LEAD ([Value], 1) OVER (ORDER BY GroupID, UserID) + [Value])/2 as [Value] 
from dbo.myTable

这个函数的问题是,当它到达组中的最后一个用户时,它给了我一个坏的值,因为它获取当前行的[Value]和下一行的值。

我想要做的是当它达到每个组的最大UserID时停止它。换句话说,当它到达GroupID = 1UserID = 8时,它应该结束并从下一个组开始。我不希望看起来像这样的一行:

GroupID    UserID    Value
1          8.5       46

在我DELETE行进入原始表后,我可以运行INSERT语句,但我没有任何东西可以确定某行是"最大值&#34 ;用户为它的小组。理想情况下,我想以某种方式告诉主要声明不要首先计算它。

0 个答案:

没有答案