2009-10-23 2 views
0

J'ai la requête suivante qui se trouve dans une boucle et fracasseracomment utiliser COALESCE dans Oracle de combiner les données de deux rangées

SELECT COALESCE(v_user_grade || ', ', '') || user_grade 
      INTO v_user_grade 
      FROM EXPIRATION_HISTORY__2 
      WHERE hist_id = v_test; 

Donc, fondamentalement, à chaque itération de la boucle nous obtenons une nouvelle valeur pour v_test . Dans certains cas, cette requête retournera plusieurs lignes. c'est quand il se brise.

Ce que je veux:

données dans EXPIRATION_HISTORY__2:

hist_id user_grade 
301  ADMIN 
302  ADMIN 
302  USER 

maintenant basées sur les données ci-dessus. ... à la fin de l'itération où v_test = 302. Je veux v_user_grade pour contenir (ADMIN, USER)

Répondre

1

Je pense que le lien suivant décrit exactement ce que vous voulez:

http://www.oracle-base.com/articles/10g/StringAggregationTechniques.php

Techniques d'agrégation de chaîne

À l'occasion, il est nécessaire pour agréger les données à partir d'un certain nombre de lignes dans une ligne , donnant une liste de données associé à une valeur spécifique.

Je ne suis pas un expert Oracle; mais il existe plusieurs solutions, en fonction de votre environnement DB.

Questions connexes