SQL 用于递增的服务器或 SSIS 代码

SQL Server or SSIS code for incrementing

输入

ID
12345
12346
12346
12387
12568
12387
12387

输出

ID     -  Value
12345  -  1
12346  -  2
12346  -  2
12387  -  3
12568  -  4
12387  -  5
12387  -  5

我有一个如上所示的输入,我还需要显示一个输出。

所以看一下,输出应该是这样的,如果前一个值与当前值相同,则值不应该发生变化,而如果值发生变化,则该值应该递增。 第一个值是默认值“1”。

是否可以在 SQL server 2008 及更高版本中写入? 这个有什么特殊功能吗??

我们可以在 SSIS 中编写相同的代码吗? 哪一个容易完成?

在 SQL Server 08 及更高版本中,您可以使用

轻松完成此操作
SELECT Id, 
       DENSE_RANK() OVER (ORDER BY Id)
FROM Table

如果性能不是关键约束,请使用此

declare @Id as int, @Rownumber as int = 0
declare @tempTable table (Id int, Rownumber int)

declare tempCur cursor for
select Id from yourtable
OPEN tempCur
FETCH NEXT FROM tempCur
INTO @Id
WHILE (@@FETCH_STATUS=0)
begin

    declare @tempId as int
    select @tempId=id from @tempTable where Rownumber=(select max(Rownumber) from @tempTable)
    if (@tempId = @Id)
        insert into @tempTable select @Id,@Rownumber
    else
    begin
        set @Rownumber = @Rownumber+1
        insert into @tempTable select @Id,@Rownumber
    end

    FETCH NEXT FROM tempCur
    INTO @Id
end
select * from @tempTable
CLOSE tempCur
DEALLOCATE tempCur

供您参考: