O Oracle 11g tem essa função LISTAGG legal que é praticamente o que você deseja, no entanto, como você está no 10g, isso não está disponível para você (a menos que você decida atualizar).
Se por algum motivo você não quiser (ou não puder por qualquer motivo) atualizar para 11g, sugiro que você veja algumas alternativas ao LISTAGG que estão disponíveis para você em 10g.
Você pode conferir algumas das alternativas propostas aqui
Rapidamente ajustado uma rápida adaptação de uma das alternativas propostas para corresponder ao seu cenário de caso:
WITH Q AS
(
SELECT 'North' POD, 'Rony' NAME FROM DUAL UNION ALL
SELECT 'North', 'James' FROM DUAL UNION ALL
SELECT 'North', 'Aby' FROM DUAL UNION ALL
SELECT 'South', 'Sam' FROM DUAL UNION ALL
SELECT 'South', 'Willy' FROM DUAL UNION ALL
SELECT 'West', 'Mike' FROM DUAL
)
SELECT POD,
RTRIM(
XMLAGG (XMLELEMENT(e, name||',') ORDER BY name).EXTRACT('//text()'),
','
) AS name
FROM q
GROUP BY POD;
Mas lembre-se que esta não é a solução real, pois você terá que adaptá-la de acordo com sua tabela (não a mesa DUAL fictícia) etc ...
Sua solução provavelmente parecerá algo ao longo das linhas de:
SELECT POD,
RTRIM(
XMLAGG (XMLELEMENT(E, NAME||',') ORDER BY NAME).EXTRACT('//text()'),
','
) AS NAME
FROM tbl1
GROUP BY POD;
Se você quiser alterar o delimitador, pode alterá-lo de vírgula nesta parte:
(E, NAME||',')
O RTRIM está lá apenas para cortar a vírgula final do final da string concatenada, se você não se incomodar com a vírgula final, pode omitir a função RTRIM para conservar a legibilidade.