hi
i tried to do this ...
earlier i gave a solution
... using recursive cte
but recursive cte's are very bad for performance
so i came up with a very easy solution
please click arrow to the left for drop create data ...
drop table data
go
create table data
(
row_num int identity(1,1) not null,
PortNumber int,
SystemNumber varchar(100)
)
go
insert into data select 1,'03T1'
insert into data select 2,'03T1'
insert into data select 3,'03T1'
insert into data select 4,'03T1'
insert into data select 5,'03T1'
insert into data select 6,'03T1'
insert into data select 7,'03T1'
insert into data select 8,'03T1'
insert into data select 9,'03T1'
insert into data select 10,'03T1'
insert into data select 11,'03T1'
insert into data select 12,'03T1'
insert into data select 169,'03T1'
insert into data select 170,'03T1'
insert into data select 171,'03T1'
insert into data select 172,'03T1'
insert into data select 173,'03T1'
insert into data select 174,'03T1'
insert into data select 175,'03T1'
insert into data select 176,'03T1'
insert into data select 177,'03T1'
insert into data select 178,'03T1'
insert into data select 179,'03T1'
insert into data select 180,'03T1'
insert into data select 133,'04T1'
insert into data select 134,'04T1'
insert into data select 135,'04T1'
insert into data select 136,'04T1'
insert into data select 137,'04T1'
insert into data select 138,'04T1'
insert into data select 139,'04T1'
insert into data select 140,'04T1'
insert into data select 141,'04T1'
insert into data select 142,'04T1'
insert into data select 143,'04T1'
insert into data select 144,'04T1'
insert into data select 181,'04T1'
insert into data select 182,'04T1'
insert into data select 183,'04T1'
insert into data select 184,'04T1'
insert into data select 185,'04T1'
insert into data select 186,'04T1'
insert into data select 187,'04T1'
insert into data select 188,'04T1'
insert into data select 189,'04T1'
insert into data select 190,'04T1'
insert into data select 191,'04T1'
insert into data select 192,'04T1'
go
please click arrow to the left for EASY way SQL
;WITH cte_grp
AS (SELECT portnumber - row_num AS grp,
*
FROM data)
SELECT 'SQL Output',
Min(RIGHT(Concat('0000', portnumber), 4))
+ '-'
+ Max(RIGHT(Concat('0000', portnumber), 4)) AS PortNumber,
systemnumber,
grp
FROM cte_grp
GROUP BY grp,
systemnumber