Посмотрите на использование ROW_NUMBER
SELECT *,
ROW_NUMBER() OVER(PARTITION BY DeviceType ORDER BY DeviceName) Label
FROM Table
EDIT
Вот небольшой пример ОБНОВЛЕНИЯ:
DECLARE @Table TABLE(
DeviceName VARCHAR(20),
DeviceType INT,
Label VARCHAR(20)
)
INSERT INTO @Table SELECT 'Probe1',1,''
INSERT INTO @Table SELECT 'Probe2',1,''
INSERT INTO @Table SELECT 'Probe3',1,''
INSERT INTO @Table SELECT 'Tank1',2,''
INSERT INTO @Table SELECT 'Tank2',2,''
INSERT INTO @Table SELECT 'Pump1',3,''
INSERT INTO @Table SELECT 'Pump2',3,''
;WITH Vals AS (
SELECT DeviceName,
DeviceType,
ROW_NUMBER() OVER(PARTITION BY DeviceType ORDER BY DeviceName) Label
FROM @Table
)
UPDATE @Table
SET Label = Vals.Label
FROM @Table t INNER JOIN
Vals ON t.DeviceName = Vals.DeviceName
AND t.DeviceType = Vals.DeviceType
SELECT *
FROM @Table