TSQL Challenge 14 - Solution by Tony Bater



-- tony_bater_tsqlchallenge_14.sql
DECLARE @t TABLE (Data VARCHAR(40) )

INSERT @t (Data) SELECT '9992EDC6-D117-4DEE-B410-4E5FAE46AE97'
INSERT @t (Data) SELECT '0BFC936B-BD9A-4C6A-AFB2-CF3F1752F8B1'
INSERT @t (Data) SELECT '4A73E7EB-7777-4A04-9258-F1E75097977C'
INSERT @t (Data) SELECT '5AAF477C-274D-400D-9067-035968F33B19'
INSERT @t (Data) SELECT '725DA718-30D0-44A9-B36A-89F27CDFEEDE'
INSERT @t (Data) SELECT '8083ED5A-D3B9-4694-BB04-F0B09C588888'

; with  
	 cte_1  as (select t.Data, SUBSTRING(t.Data,1,1)  Char, 1 Idx,   1 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end,  1 Pos from @t t join cte_1  on t.Data=cte_1.Data  where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_2  as (select t.Data, SUBSTRING(t.Data,2,1)  Char, 2 Idx,   2 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end,  2 Pos from @t t join cte_2  on t.Data=cte_2.Data  where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_3  as (select t.Data, SUBSTRING(t.Data,3,1)  Char, 3 Idx,   3 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end,  3 Pos from @t t join cte_3  on t.Data=cte_3.Data  where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_4  as (select t.Data, SUBSTRING(t.Data,4,1)  Char, 4 Idx,   4 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end,  4 Pos from @t t join cte_4  on t.Data=cte_4.Data  where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_5  as (select t.Data, SUBSTRING(t.Data,5,1)  Char, 5 Idx,   5 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end,  5 Pos from @t t join cte_5  on t.Data=cte_5.Data  where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_6  as (select t.Data, SUBSTRING(t.Data,6,1)  Char, 6 Idx,   6 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end,  6 Pos from @t t join cte_6  on t.Data=cte_6.Data  where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_7  as (select t.Data, SUBSTRING(t.Data,7,1)  Char, 7 Idx,   7 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end,  7 Pos from @t t join cte_7  on t.Data=cte_7.Data  where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_8  as (select t.Data, SUBSTRING(t.Data,8,1)  Char, 8 Idx,   8 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end,  8 Pos from @t t join cte_8  on t.Data=cte_8.Data  where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_9  as (select t.Data, SUBSTRING(t.Data,9,1)  Char, 9 Idx,   9 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end,  9 Pos from @t t join cte_9  on t.Data=cte_9.Data  where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_10 as (select t.Data, SUBSTRING(t.Data,10,1) Char, 10 Idx, 10 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 10 Pos from @t t join cte_10 on t.Data=cte_10.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_11 as (select t.Data, SUBSTRING(t.Data,11,1) Char, 11 Idx, 11 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 11 Pos from @t t join cte_11 on t.Data=cte_11.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_12 as (select t.Data, SUBSTRING(t.Data,12,1) Char, 12 Idx, 12 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 12 Pos from @t t join cte_12 on t.Data=cte_12.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_13 as (select t.Data, SUBSTRING(t.Data,13,1) Char, 13 Idx, 13 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 13 Pos from @t t join cte_13 on t.Data=cte_13.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_14 as (select t.Data, SUBSTRING(t.Data,14,1) Char, 14 Idx, 14 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 14 Pos from @t t join cte_14 on t.Data=cte_14.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_15 as (select t.Data, SUBSTRING(t.Data,15,1) Char, 15 Idx, 15 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 15 Pos from @t t join cte_15 on t.Data=cte_15.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_16 as (select t.Data, SUBSTRING(t.Data,16,1) Char, 16 Idx, 16 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 16 Pos from @t t join cte_16 on t.Data=cte_16.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_17 as (select t.Data, SUBSTRING(t.Data,17,1) Char, 17 Idx, 17 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 17 Pos from @t t join cte_17 on t.Data=cte_17.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_18 as (select t.Data, SUBSTRING(t.Data,18,1) Char, 18 Idx, 18 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 18 Pos from @t t join cte_18 on t.Data=cte_18.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_19 as (select t.Data, SUBSTRING(t.Data,19,1) Char, 19 Idx, 19 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 19 Pos from @t t join cte_19 on t.Data=cte_19.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_20 as (select t.Data, SUBSTRING(t.Data,20,1) Char, 20 Idx, 20 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 20 Pos from @t t join cte_20 on t.Data=cte_20.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_21 as (select t.Data, SUBSTRING(t.Data,21,1) Char, 21 Idx, 21 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 21 Pos from @t t join cte_21 on t.Data=cte_21.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_22 as (select t.Data, SUBSTRING(t.Data,22,1) Char, 22 Idx, 22 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 22 Pos from @t t join cte_22 on t.Data=cte_22.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_23 as (select t.Data, SUBSTRING(t.Data,23,1) Char, 23 Idx, 23 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 23 Pos from @t t join cte_23 on t.Data=cte_23.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_24 as (select t.Data, SUBSTRING(t.Data,24,1) Char, 24 Idx, 24 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 24 Pos from @t t join cte_24 on t.Data=cte_24.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_25 as (select t.Data, SUBSTRING(t.Data,25,1) Char, 25 Idx, 25 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 25 Pos from @t t join cte_25 on t.Data=cte_25.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_26 as (select t.Data, SUBSTRING(t.Data,26,1) Char, 26 Idx, 26 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 26 Pos from @t t join cte_26 on t.Data=cte_26.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_27 as (select t.Data, SUBSTRING(t.Data,27,1) Char, 27 Idx, 27 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 27 Pos from @t t join cte_27 on t.Data=cte_27.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_28 as (select t.Data, SUBSTRING(t.Data,28,1) Char, 28 Idx, 28 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 28 Pos from @t t join cte_28 on t.Data=cte_28.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_29 as (select t.Data, SUBSTRING(t.Data,29,1) Char, 29 Idx, 29 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 29 Pos from @t t join cte_29 on t.Data=cte_29.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_30 as (select t.Data, SUBSTRING(t.Data,30,1) Char, 30 Idx, 30 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 30 Pos from @t t join cte_30 on t.Data=cte_30.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_31 as (select t.Data, SUBSTRING(t.Data,31,1) Char, 31 Idx, 31 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 31 Pos from @t t join cte_31 on t.Data=cte_31.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_32 as (select t.Data, SUBSTRING(t.Data,32,1) Char, 32 Idx, 32 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 32 Pos from @t t join cte_32 on t.Data=cte_32.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_33 as (select t.Data, SUBSTRING(t.Data,33,1) Char, 33 Idx, 33 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 33 Pos from @t t join cte_33 on t.Data=cte_33.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_34 as (select t.Data, SUBSTRING(t.Data,34,1) Char, 34 Idx, 34 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 34 Pos from @t t join cte_34 on t.Data=cte_34.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_35 as (select t.Data, SUBSTRING(t.Data,35,1) Char, 35 Idx, 35 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 35 Pos from @t t join cte_35 on t.Data=cte_35.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
  ,cte_36 as (select t.Data, SUBSTRING(t.Data,36,1) Char, 36 Idx, 36 Pos from @t t UNION ALL select t.Data, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then SubString(t.Data,Idx+1,1) else null end, case when SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1) then Idx+1 else null end, 36 Pos from @t t join cte_36 on t.Data=cte_36.Data where SubString(t.Data,Idx+1,1)=SubString(t.Data,Idx,1))
select Data, Char, Pos, Len
from 
	(
		select Data, Char, Pos, Len, MAX(Len) over (partition by Data) MaxLen
		from 
			(
				select distinct 
				Data, Char, MIN(Pos) over (partition by Data, Char, Len) Pos, Len+1-MIN(Pos) over (partition by Data, Char, Len) Len
				from 
					(
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_1   where Idx>1   UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_2   where Idx>2   UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_3   where Idx>3   UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_4   where Idx>4   UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_5   where Idx>5   UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_6   where Idx>6   UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_7   where Idx>7   UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_8   where Idx>8   UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_9   where Idx>9   UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_10  where Idx>10  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_11  where Idx>11  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_12  where Idx>12  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_13  where Idx>13  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_14  where Idx>14  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_15  where Idx>15  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_16  where Idx>16  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_17  where Idx>17  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_18  where Idx>18  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_19  where Idx>19  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_20  where Idx>20  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_21  where Idx>21  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_22  where Idx>22  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_23  where Idx>23  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_24  where Idx>24  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_25  where Idx>25  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_26  where Idx>26  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_27  where Idx>27  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_28  where Idx>28  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_29  where Idx>29  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_30  where Idx>30  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_31  where Idx>31  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_32  where Idx>32  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_33  where Idx>33  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_34  where Idx>34  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_35  where Idx>35  UNION
						SELECT Data, Char, Pos, MAX(Idx) over (partition by Data, Char, Pos) as Len  FROM cte_36  where Idx>36  
					) t1
				) t2
		) t3 
order by MaxLen desc, Data, Pos

Did you understand how this solution work? If you find it difficult to understand, you can Request an Explanation or you can Write an explanation to help others better understand this.