GMB Ударь меня к этому. Обратите внимание, разница между Rank и Dense_rank. Либо может работать в зависимости от того, что вы ищете. Я добавил дополнительную строку.
DECLARE @table TABLE
(
InvoiceNr BIGINT,
ConsecutiveNumber INT,
ItemNr VARCHAR(100)
)
INSERT @table VALUES
(20001222,118 ,'h46f4-22-05'),
(20001222,343 ,'h46f4-22-05'),
(20001222,1243,'h46f4-22-05'),
(20001222,1991,'h46f4-22-05'),
(20001222,461 ,'n8-91'),
(20001222,1495,'n8-91'),
(20001222,1495,'n8-91'),
(20001222,1495,'n8-91'),
(20001222,1844,'pibb53-3-x'),
(20001222,1844,'pibb53-3-x'),
(20001222,1844,'pibb53-3-x'),
(20001222,1845,'pibb53-3-x'); -- New record
SELECT
t.*,
[RANK] = RANK() OVER (PARTITION BY ItemNr, InvoiceNr
ORDER BY ConsecutiveNumber),
[DENSE_RANK] = DENSE_RANK() OVER (PARTITION BY ItemNr, InvoiceNr
ORDER BY ConsecutiveNumber)
FROM @table AS t;
Результаты:
InvoiceNr ConsecutiveNumber ItemNr RANK DENSE_RANK
------------ ----------------- --------------- ------ -------------
20001222 118 h46f4-22-05 1 1
20001222 343 h46f4-22-05 2 2
20001222 1243 h46f4-22-05 3 3
20001222 1991 h46f4-22-05 4 4
20001222 461 n8-91 1 1
20001222 1495 n8-91 2 2
20001222 1495 n8-91 2 2
20001222 1495 n8-91 2 2
20001222 1844 pibb53-3-x 1 1
20001222 1844 pibb53-3-x 1 1
20001222 1844 pibb53-3-x 1 1
20001222 1845 pibb53-3-x 4 2
Мелкие детали, но обратите внимание на разницу.