J'essaie d'écrire un script Oracle ou MS SQL qui génère la première ligne contenant la valeur de la cellule dans la colonne A, la deuxième ligne contient la valeur de la colonne d'une colonne B et séparés par une virgule, La troisième rangée contient les valeurs de cellule de la colonne A, B et C concaténées et séparées par une virgule.
Supposons la table SQL suivante: p> la sortie serait: < / p> Comment devrais-je écrire l'instruction SQL SELECT? P> P>
3 Réponses :
Vous pouvez utiliser si vous souhaitez combiner toutes les données en colonne, utilisez appliquer code>:
concat () code>: p>
Un moyen d'improvoir des données et de faire une concaténation récursive (solution Oracle):
--data with t(a, b, c, d, e, f) as ( select 'matty', 'lucy', 'james', 'mike', 'tala', 'mark' from dual union all select 'jana ', 'steph', 'alex', 'mohd', 'hani', 'elie' from dual ) -- end of data select ltrim(sys_connect_by_path(name, ','), ',') path from (select rownum r1, a, b, c, d, e, f from t) unpivot (name for r2 in (a as 1, b as 2, c as 3, d as 4, e as 5, f as 6)) connect by prior r1 = r1 and r2 = prior r2 + 1 start with r2 = 1
Si vous souhaitez une version qui fonctionne dans les deux bases de données: