9
votes

Comment récupérer deux données de colonnes dans un format B, B dans Oracle

J'ai deux colonnes dans la base de données Oracle xxx pré>

Je souhaite retirer les données telles que je vais obtenir des données à la suite P>

+---------+---------+
| Column1 | Column2 |
+---------+---------+  
| A       | 1,2     |
+---------+---------+


4 commentaires

J'ai modifié votre question pour voir les lignes en mode code, pouvez-vous confirmer que c'est ce que vous vouliez dire ... oups, bluefeet trompa mes modifications.


Dupliqué possible de Valeurs de colonne d'une ligne


Dupliqué possible de Construire une virgule séparée Liste des valeurs dans une instruction Oracle SQL


"S'il vous plaît me fournir la solution." joli


4 Réponses :


19
votes

Tim Hall a une jolie liste canonique de Techniques d'agrégation de chaîne dans Oracle .

Quelle technique que vous utilisez dépend d'un certain nombre de facteurs, y compris la version d'Oracle et si vous recherchez une solution purement SQL. Si vous utilisez Oracle 11.2, je vous suggérerais probablement d'utiliser listagg xxx

si vous utilisez une version antérieure d'Oracle, en supposant que tu ne fais pas " T Besoin d'une solution purement SQL, je préférerais généralement utiliser le Fonction d'agrégate définie par l'utilisateur approche.


3 commentaires

Justin, cette requête serait-elle fonctionner si nous devons regrouper sur plusieurs colonnes s'il vous plaît? Merci.


@JIMMY - Oui, ça devrait.


Détails supplémentaires à docs.oracle.com/cd/e11882_01 /Server.112/e10592/...



3
votes

Si vous avez 10 g, vous devez ensuite passer la fonction ci-dessous:

SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1


0 commentaires

2
votes

sur ma version Oracle 10 Il fait le travail:

SELECT column1, wm_concat( column2)
  FROM table_name
 GROUP BY column1


0 commentaires

3
votes

Toutes les réponses Abow sont correctes forte> et je veux ajouter un cas pour résoudre un faible problème. Dans mon cas my_column1 code> type était nvarchar2 code> mais texte était numéro code> et le code ci-dessous ne fonctionne pas et ne m'affiche que WhitSpace:

select group_id, listagg( to_char(t.my_column1) || '-' || to_char(t.doc_date,'dd.mm.yyyy') ||  ' ') within group(order by doc_date) 
 from my_table t
 group by group_id


0 commentaires