Я до сих пор не знаю, что такое n-грамм, но, исходя из ответа Эда, это то, что вам нужно?
declare @string varchar(max) = 'hello'
declare @n int = 3
set @string = @string + REPLICATE('-',@n - (len(@string) % @n))
;with n as
(
SELECT 1 AS i
UNION ALL
SELECT i+1
FROM n
WHERE i <= (LEN(@string)-@n)
)
select SUBSTRING(@string, i, @n), COUNT(*)
from n
group by SUBSTRING(@string, i, @n)
option (maxrecursion 0)