Check It once....declare @t1 table(myYear varchar(4), noOfBook int);insert into @t1 values('2010',15000);insert into @t1 values('2011',10000);with cte as(select 1 as num,myYear,noOfBook,1 as serialStart ,50 as serialEnd from @t1union allselect c.num+1, a.myYear,a.noOfBook ,c.serialStart+50,c.serialEnd+50 from @t1 a inner join cte c on a.myYear=c.myYearwhere c.num<a.noOfBook)select convert(varchar(4),myYear)+'/'+RIGHT('00000'+convert(varchar(10),num),5) as noOfBook ,RIGHT('00000'+convert(varchar(10),serialStart),6) as serialStart ,RIGHT('00000'+convert(varchar(10),serialEnd),6) as serialEnd from cteorder by myYearoption (maxrecursion 0)--Ranjit