为具有指定值的行分配一个连续的 ID

assign a consecutive ID for rows with specified value

在我的例子中,如何为具有指定值的行分配一个连续的 ID Identifier,最好按 Value 升序排列?

table 应该是这样的:

Identifier      ID  Name        Value
identifier1     1   example1    value100
identifier1     2   example2    value200
identifier1     3   example3    value400
identifier2     1   example3    value100
identifier2     2   example5    value500
identifier3     1   example11   value600
identifier3     2   example12   value800

到目前为止,我的代码只给出了整个 Table #Temp:

的连续 ID
CREATE TABLE #Temp (
        Identifier          NVARCHAR(256)
    ,   ID  INT NOT NULL    IDENTITY( 1, 1)
    ,   Name                NVARCHAR(256)
    ,   Value               NVARCHAR(256)
    )

WHILE Condition
BEGIN


SELECT @Identifier  = Identifier    (..)
SELECT @Table       = Table         (..)

SET @Sql = N'
        SELECT  
        ''' + @Identifier + '''
    ,   Name
    ,   MAX(Value)
        FROM ' + @Table+ ' WITH (NOLOCK)
        GROUP BY Name
        ORDER BY Name
        '

    INSERT INTO #Temp
    EXEC ( @Sql )
END

您似乎在尝试将连续的 ID 分配给具有相同标识符的每组行。您只需要 ROW_NUMBER()

使用 ROW_NUMBER()

添加 ID
SELECT ID = ROW_NUMBER() OVER (PARTITION BY Identifier ORDER BY [Value]),*
From YourTable