2009-04-14 10 views
1

I ont les tableaux suivants:méthode Oracle en ligne pour produire CSV pour la relation

ALERT (ID,Name) 
    1 | Alert A 
    2 | Alert B 


ALERT_BRAND_XREF (ALERT_ID, BRAND_ID) 
    1 | 1 
    1 | 2 
    2 | 1 

BRAND (ID, NAME) 
    1 | Brand A 
    2 | Brand B 

Je suis en train d'écrire une instruction pour renvoyer une liste d'alertes avec les marques applicables comme une liste CSV dans un champ . Résultats souhaités:

Alert A | Brand A, Brand B 
Alert B | Brand A 

Existe-t-il un moyen de le faire sans écrire de fonction séparée? Je voudrais le faire dans une seule instruction SQL si possible.

Oracle 9i.

Répondre

0

Voici une autre façon de transformer un groupe de répéter dans une virgule liste établie. Il utilise la clause MODEL du langage SQL d'Oracle. (Oracle 10g)

http://plsqlnotes.blogspot.com/2007/09/using-model-for-generating-csv-by_2227.html#links

(remplace ma réponse précédente mal).

+0

Je ne savais pas d'un générateur CSV intégré. D'autres détails? Lien? –

+0

Oups, ma gaffe. Je n'ai pas lu votre problème attentivement. Je pensais que vous essayiez de jeter tout le contenu dans un fichier CSV. Pardon! –

1

Regardez this solutions, c'est très utile. Utilisation de SYS_CONNECT_BY_PATH et de fonctions analytiques.

0

Oracle vous pouvez utiliser wm_concat()

SELECT a.Name , wm_concat(b.Name) FROM 
    ALERT a, 
    ALERT_BRAND_XREF abx , 
    BRAND b 
    where a.id = abx.ALERT_ID 
    and abx.BRAND_ID = b.id 
    group by a.Name; 
Questions connexes