• 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;