Consulta SQL para transformar una list de numbers en 2 columnas

¿Cómo puedo escribir una consulta para transformar una list de numbers en 2 columnas?
por ejemplo, tengo una tabla con una columna de ID con valores (3, 6, 9, 12, 15, 18).

Me gustaría un resultado que se vea como

ID NEXT_ID 3 6 6 9 9 12 12 15 15 18 

Tenga en count que esto debería funcionar para cualquier secuencia de id. No necesariamente múltiplos de 3.
Estoy trabajando en Oracle 11.2

 SELECT first.ID, min(second.ID) as NEXT_ID FROM TABLE_NAME first, TABLE_NAME second WHERE first.ID < second.ID GROUP BY first.ID 

Puede usar las funciones analíticas de Oracle para ese fin

 SELECT ID, LEAD(ID, 1) OVER (ORDER BY ID) AS NEXTID FROM TABLE 

Para su información Esta es una de las muchas soluciones posibles en mysql (también podría funcionar para Oracle pero no lo sabría).

El siguiente script es básicamente ejecutable directamente y dará como resultado:

 Id Next === ==== 3 6 6 9 9 12 12 15 15 18 

Aquí está el guión.

 CREATE TABLE `Numbers` ( `Id` INT NOT NULL PRIMARY KEY ); INSERT INTO `Numbers` (`Id`) VALUES (3), (6), (9), (12), (15), (18); SELECT `Number`.`Id` ,`Next`.`Id` AS `Next` FROM `Numbers` AS `Number` LEFT JOIN `Numbers` AS `Next` ON `Next`.`Id` > `Number`.`Id` GROUP BY `Number`.`Id` HAVING `Next`.`Id` = MIN(`Next`.`Id`);