2010-12-06 5 views
0

ayant un sql par exemple. quelque chose comme le résultat suivant dans certaines lignes avec une valeur. Je recherche un SQL différent de SELECT * FROM some_sql, ce qui donne une ligne avec des valeurs séparées par des virgules.sélectionnez l'inverse du résultat SQL comme une liste de chaînes


WITH some_sql AS (
    SELECT 1 FROM DUAL 
    UNION 
    SELECT 2 FROM DUAL 
) 
SELECT * FROM some_sql 

ce résultat SQL dans les deux lignes avec la valeur 1 et 2. I seach un SQl résultant en 1,2 sans changer le code de 'some_sql'.

+0

Vous essayez de concaténer les valeurs prises à partir de plusieurs lignes dans une seule chaîne, et le nombre de lignes n'est pas connu dans avance? – Tim

+0

Oui. Je m'attends à un nombre de lignes jusqu'à environ 10 –

Répondre

2

Sice vous êtes sur 11G vous pouvez utiliser LISTAGG

WITH some_sql AS (
    SELECT 1 x FROM DUAL 
    UNION 
    SELECT 2 x FROM DUAL 
) 
SELECT LISTAGG(x, ',') WITHIN GROUP(ORDER BY x) FROM some_sql 
+0

+2 très bonne réponse, seulement je viens de réaliser qu'il est 10g DB avec 11g Driver ;-( –

Questions connexes