-- 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.