janvier
2005
La question :
j’ai une table Table2 contenant deux champs Champ1 et Champ2 ;
je cite comme exemple les valeurs suivant:
1 a
1 b
1 c
2 q
2 p
je veux obtenir le résultat suivant, uniquement par requêtes SQL :
1 abc
2 qp
Ma réponse :
Je m’amuserai à définir un n° pour chaque valeur, son n° d’ordre. Ensuite, je réordonnacerai l’affichage en fonction de ce n° d’ordre.
Cela donnerait ceci :
1- Requete pour donner les n° d’ordre :
Je mettrai ce résultat dans une table, pour des raison évidentes de rapidité de traitement, mais aussi, pour des raisons de compatibilité avec les requêtes analyse croisées
FROM Table2 b
WHERE b.Champ1=a.Champ1 AND b.Champ2<=a.Champ2) AS NumOrdre INTO Table3
FROM Table2 AS a;
2-Ensuite, je ferai l’analyse croisée sur cette requête ainsi :
SELECT Champ1
FROM Table3
GROUP BY Champ1
PIVOT NumOrdre;
Par contre, cela n’apportera pas la concaténation des valeurs dans une requête. Chaque valeur reste dans une colonne distincte.