So after gleaning that this problem may be solved by a recursive CTE I landed here.
The following seems to work. I am still studying this solution since it is on the edge of my understanding.
DECLARE @GroupCode varchar(20)
SET @GroupCode = 'E'
;WITH Members AS
(
--Anchor
SELECT
GroupCode,
Member,
0 As isCycle,
'.' + CAST(Member As varchar(max)) + '.' As [path]
FROM dbo.GroupMembers
WHERE
Member NOT IN (Select GroupCode from GroupMembers)
UNION ALL
--Recursive call
SELECT
h.GroupCode,
h.Member,
CASE WHEN m.[path] like '%.' + CAST(h.Member as varchar(max)) + '.%' THEN 1 ELSE 0 END As isCycle,
m.[path] + CAST(h.Member as varchar(max)) + '.' As [path]
FROM GroupMembers h
INNER JOIN Members m
ON h.member = m.GroupCode
WHERE
isCycle = 0
)
SELECT
LEFT(REPLACE(path,'.',''),1) AS Member,
*
FROM
Members
WHERE
Members.isCycle = 0 AND
@GroupCode = GroupCode