TSQL Challenge 14 - Solution by Kevin Suchlicki



;WITH Nbrs As (
	SELECT	Number n 
	FROM	master..spt_values spt 
	WHERE	spt.Type='P' And spt.Number Between 1 And 36
)
, x As (
	SELECT	t.Data
			, Left(Substring(t.Data, n1.n, n2.n), 1) c
			, n1.n p
			, Len(Substring(t.Data, n1.n, n2.n)) l
	FROM	Nbrs n1
			CROSS JOIN Nbrs n2
			CROSS JOIN @t t
	WHERE	n2.n >1 and n1.n + n2.n <= charindex('-','AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA-', n1.n)
			And Replace(Substring(t.Data, n1.n, n2.n), Left(Substring(t.Data, n1.n, n2.n), 1), '') = ''
			And Left(Substring(t.Data, n1.n, n2.n), 1) != Substring(t.Data, n1.n + n2.n, 1)
			And Left(Substring(t.Data, n1.n, n2.n), 1) != Substring(t.Data, n1.n - 1, 1)
)
, o As (
	SELECT	x.Data, Max(x.l) ml, count(*) ng
	FROM	x
	GROUP BY x.Data
)
SELECT	x.Data, x.c [Char], x.p Pos, x.l [Len]
FROM	x
		INNER JOIN o ON o.Data = x.Data
ORDER BY o.ml DESC, o.ng DESC, x.p;

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.