add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
select @@version;
(No column name)
Microsoft SQL Server 2012 (SP4) (KB4018073) - 11.0.7001.0 (X64)
Aug 15 2017 10:23:29
Copyright (c) Microsoft Corporation
Express Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
create table data(Materialno_start varchar(20),
Materialno_end varchar(20),
Name varchar(10),
MType varchar(10),
Noofstock int);


insert into data values('101-31101','101-31105','Pendrive','Hardware',12);
insert into data values('101-41234','101-41236','Mcafee','Software',5);
insert into data values('202-54367','202-54368','Keyboard','Hardware',2);
insert into data values('405-34455',NULL,'Mouse','Hardware',20);
insert into data values('321-98765','321-98766','Cable','Hardware',6);
5 rows affected
select * from data
Materialno_start Materialno_end Name MType Noofstock
101-31101 101-31105 Pendrive Hardware 12
101-41234 101-41236 Mcafee Software 5
202-54367 202-54368 Keyboard Hardware 2
405-34455 null Mouse Hardware 20
321-98765 321-98766 Cable Hardware 6
select * from data
cross apply (VALUES(len(Materialno_start))) leng(mn)
cross apply (VALUES(charindex('-', Materialno_start) )) s(hyp)
cross apply (VALUES(substring(Materialno_start,s.hyp-leng.mn+1,leng.mn))) n(base)
cross apply (VALUES(substring(Materialno_start,s.hyp+1,leng.mn))) starts(st)
cross apply (VALUES(substring(coalesce(Materialno_end,Materialno_start),s.hyp+1,leng.mn))) ends(ed)
cross apply (VALUES(convert(int,ends.ed)-convert(int,starts.st) )) diff(s)
Materialno_start Materialno_end Name MType Noofstock mn hyp base st ed s
101-31101 101-31105 Pendrive Hardware 12 9 4 101- 31101 31105 4
101-41234 101-41236 Mcafee Software 5 9 4 101- 41234 41236 2
202-54367 202-54368 Keyboard Hardware 2 9 4 202- 54367 54368 1
405-34455 null Mouse Hardware 20 9 4 405- 34455 34455 0
321-98765 321-98766 Cable Hardware 6 9 4 321- 98765 98766 1
with cte as
(
select Materialno_start,Materialno_end,name,mtype,noofstock,starts.st as ns,ends.ed as nd,diff.s as d,i=1,n=convert(varchar(30),starts.st),n.base as bs from data
cross apply (VALUES(len(Materialno_start))) leng(mn)
cross apply (VALUES(charindex('-', Materialno_start) )) s(hyp)
cross apply (VALUES(substring(Materialno_start,s.hyp-leng.mn+1,leng.mn))) n(base)
cross apply (VALUES(substring(Materialno_start,s.hyp+1,leng.mn))) starts(st)
cross apply (VALUES(substring(coalesce(Materialno_end,Materialno_start),s.hyp+1,leng.mn))) ends(ed)
cross apply (VALUES(convert(int,ends.ed)-convert(int,starts.st) )) diff(s)
union all
select Materialno_start,Materialno_end,name,mtype,noofstock,ns,nd,d,i=i+1,n=convert(varchar(30),n+1),bs from cte
where i<=d

)
select Materialno_start,Materialno_end,Name,mtype,noofstock,bs+n as newid from cte order by 1
Materialno_start Materialno_end Name mtype noofstock newid
101-31101 101-31105 Pendrive Hardware 12 101-31101
101-31101 101-31105 Pendrive Hardware 12 101-31102
101-31101 101-31105 Pendrive Hardware 12 101-31103
101-31101 101-31105 Pendrive Hardware 12 101-31104
101-31101 101-31105 Pendrive Hardware 12 101-31105
101-41234 101-41236 Mcafee Software 5 101-41234
101-41234 101-41236 Mcafee Software 5 101-41235
101-41234 101-41236 Mcafee Software 5 101-41236
202-54367 202-54368 Keyboard Hardware 2 202-54367
202-54367 202-54368 Keyboard Hardware 2 202-54368
321-98765 321-98766 Cable Hardware 6 321-98765
321-98765 321-98766 Cable Hardware 6 321-98766
405-34455 null Mouse Hardware 20 405-34455