Here is away to do it in Sql 2005:I removed a couple countries from the output so it would fit here.set nocount oncreate table #yourTable (country varchar(20), city varchar(20))goinsert #yourTableselect 'Algeria', 'Algiers'union all select 'Algeria', 'Oran'union all select 'Argentina', 'Buenos Aires'union all select 'Argentina', 'Catamarca'union all select 'Andorra', 'Canillo'union all select 'Armenia', 'Yerevan'union all select 'Australia', 'Sydney'union all select 'Australia', 'Melbourne'union all select 'Australia', 'Brisbane'union all select 'Australia', 'Perth'union all select 'Bosnia', 'Banja Luka'union all select 'Bulgaria', 'Sofia'union all select 'Brazil', 'Sao Paulo'union all select 'Brazil', 'Salvador'union all select 'Brazil', 'Brasilia'union all select 'Brazil', 'Curitiba'union all select 'Brazil', 'Belem'godeclare @colList varchar(8000)select @colList = coalesce(@colList + ', [' + country + ']', '[' + country + ']') from #yourTable group by countryexec('select ' + @colList + 'from (select country, city, row_number() over (partition by country order by city) as rn from #yourTable) tpivot (max(city) for country in (' + @colList + ')) as p')godrop table #yourTableOUTPUT:Algeria Argentina Australia Bosnia Brazil Bulgaria---------------------------------------- -------------------- -------------------- -------------------- --------------------Algiers Buenos Aires Brisbane Banja Luka Belem SofiaOran Catamarca Melbourne NULL Brasilia NULLNULL NULL Perth NULL Curitiba NULLNULL NULL Sydney NULL Salvador NULLNULL NULL NULL NULL Sao Paulo NULLBe One with the OptimizerTG