Please use this. Set Based Approach
;WITH SingleDigits(Number) AS
(
SELECT Number
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8),
(9), (0)) AS X(Number)
)
,Series AS
(
SELECT (d1.Number+1) + (10*d2.Number) + (100*d3.Number) + (1000*d4.Number) Number
from
SingleDigits as d1,
SingleDigits as d2,
SingleDigits as d3,
SingleDigits as d4
)
SELECT Id,Word
FROM
(
SELECT Id,word,u,COUNT(*) OVER(PARTITION BY ID) u1
FROM
(
SELECT Id,word,Charx,DENSE_RANK() OVER(ORDER BY Id,Word,Charx) u
FROM Wrds N
CROSS APPLY
(
SELECT SUBSTRING(word,number,1) Charx , number
FROM
(
SELECT DISTINCT number FROM
Series WHERE number > 0 AND number <= DATALENGTH(N.word)
)v
)t
)z
GROUP BY Id,word,u
)x WHERE u1 = 1
OUTPUT
Id Word
----------- ----------
3 aaaa
4 eee
5 aaaaaa
7 aa
10 oooooo
(5 rows affected)
Read more from -
https://msbiskills.com/2018/02/16/sql-puzzle-names-with-non-repeating-characters-puzzle-sql-interview-question/