根据sqlserver

时间:2016-12-14 11:04:29

标签: tsql sql-server-2014

enter image description here

需要根据ID3列生成随机数。在备注中提到了每一行逻辑。 注意:这是我需要应用于大数据集的示例数据

是否有可能根据条件创建兰特号码或增加号码。

IF条件通过然后保留相同的其他生成另一个(rand +1)

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