You could use a recursive CTE instead of temp table. I used a temp table to simulate your result set (and added a couple sections for testing), but you can do this with your base table and not use temp table at all:
IF OBJECT_ID('tempdb..#source') IS NOT NULL
DROP TABLE #source;
CREATE TABLE #source
(Section VARCHAR(255)
,Name VARCHAR(255))
INSERT #source
(Section
,Name)
select 'Section A' Section,'(Mick) Albert Edward Scott' Name
union select 'Section A','Eric aka Mick Vernon Preston'
union select 'Section A','Gary Michael Glenane'
union select 'Section A','Maksymiljan Michael Kaboth'
union select 'Section A','Michael Clarence Braithwaite'
union select 'Section A','Michael Paul Jones'
union select 'Section A','Shayne Michael Currigan'
union select 'Section A','Stipe Mamic'
union select 'Section B','(Mick) Albert Edward Scott'
union select 'Section B','Anthony Michael Payne'
union select 'Section B','Gary Michael Glenane'
union select 'Section B','Maksymiljan Michael Kaboth'
union select 'Section B','Michael Clarence Braithwaite'
union select 'Section B','Michael John Crawford'
union select 'Section B','Michael Paul Jones'
union select 'Section B','Micheal David Joshi'
union select 'Section B','Shayne Michael Currigan'
union select 'Section B','Stipe Mamic'
union select 'Section C','C Test'
union select 'Section D','D Test'
union select 'Section E','E Test';
WITH CTE
(Value,
OrderNum)
AS
(
SELECT
Section AS Value
--Multiply by two so we can add one to the section values and order final result as expected
,ROW_NUMBER() OVER (ORDER BY Section ASC) * 2 AS OrderNum
FROM #source
GROUP BY Section
UNION ALL
SELECT
Name AS Value
,OrderNum + 1
FROM #source
JOIN CTE on #source.Section = CTE.Value
)
SELECT
Value
FROM CTE
ORDER BY OrderNum ASC;