需要根据ID3列生成随机数。在备注中提到了每一行逻辑。 注意:这是我需要应用于大数据集的示例数据
是否有可能根据条件创建兰特号码或增加号码。
IF条件通过然后保留相同的其他生成另一个(rand +1)
答案 0 :(得分:2)
假设ID1是递增数字,这将为您提供所需行为的递增数字。如果不是,您将需要其他方式来订购数据,因为订单是您想要的行为所固有的。
这里我假设我们可以按ID1订购,因为它没有在逻辑
中的任何其他地方使用create table #t
(
ID1 INT,
ID2 INT,
ID3 INT
)
insert into #t(ID1, ID2, ID3) values(1,1,1),(2,1,1),(3,2,1),(4,2,31),(5,2,1),(6,2,1),(7,2,23),(8,2,31);
with c1 as
(
select ID1, ID2, ID3,
case when ID3 != 1 or lag(ID3,1,2) over (order by ID1) != 1 then 1 else 0 end as IncrementHere
from #t
)
select ID1, ID2, ID3, sum(IncrementHere) over (order by ID1 rows unbounded preceding) as IncrementingNumber
from c1