If revnum is always sequential, this code code be cleaner.DECLARE @Table TABLE (RevNum int,LastRev varchar(10),[key] int)INSERT INTO @TableVALUES(40,NULL,123),(41,NULL,123),(42,NULL,123),(43,NULL,123),(44,NULL,123),(45,'C',123)UPDATE t2SET t2.LastRev = CASE WHEN t2.Rown = 0 THEN t2.LastRev ELSE RIGHT('0000' +CONVERT(varchar(10),t2.maxrev-t2.Revnum),4) ENDFROM(SELECT t.* ,[Rown]= ROW_NUMBER() OVER(partition by [key] order by RevNum desc)-1 ,[MaxRev] = MAX(RevNum) OVER(Partition by [key]) FROM @Table t)t2SELECT *FROM @table
JimEveryday I learn something that somebody else already knew