Sim*_*ner 1 sql t-sql sql-server
我有一些数据看起来像这样:
uid radius
1 10
2 10
3 10
4 2
5 4
6 10
7 10
8 10
Run Code Online (Sandbox Code Playgroud)
我想要的是每个具有相同半径值的组都有自己唯一的 id,例如:
uid radius GroupdId
1 10 1
2 10 1
3 10 1
4 2 2
5 4 3
6 10 4
7 10 4
8 10 4
Run Code Online (Sandbox Code Playgroud)
我不希望半径为 10 的第二组具有与第一组相同的组 ID(而不是 1)。
我正在研究 SQL Server,但所有数据库的解决方案应该是相同的。
(我以前这样做过,但我一辈子都不记得我是怎么做到的。)
小智 5
尝试这个:
with t as
(
select
uid,
radius,
lag(radius,1) over (order by uid) as prev_rad
from
radtable
)
select
uid,
radius,
sum
(
case when radius = coalesce(prev_rad,radius) then 0 else 1 end
)
over
(
order by uid
) + 1 as GroupID
from
t
Run Code Online (Sandbox Code Playgroud)