Bonjour,
Voici mon souci, j'aimerais convertir en colonne les lignes contenues dans une table ou requete.
Un exemple vaut tout les discours, le voici :
Table origine:
résultat attendu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 -------------------------- | user | code | valeur | -------------------------- | 1 | 1 | a | | 1 | 2 | b | | 2 | 1 | c | --------------------------
Conclusion, la table est composé du user et des colonnes issues en quelque sorte d'un select distinct code from table_origine. et on remplit la ligne avec les valeurs voulues.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 -------------------------- | user | 1 | 2 | -------------------------- | 1 | a | b | | 2 | c | NULL | --------------------------
Pour le moment je pense à créé une table tempo en créant la liste des colonnes avec un select @col = @col + code + ', ' from table_origine.
Puis parcourir la table avec un order sur user, tant qu'on est avec le meme user, je concatene le nom de la colonne dans @col_field avec une virgule, et de meme pour les valeurs dans @col_values et dès qu'on change de user, je fais un insert into table_final (@col_field) values (@col_values).
Voilà, si vous avez plus simple, je suis preneur.
Pour ceux qui ont encore du temps à me consacrer, la deuxieme étapes est encore plus difficile, puisqu'en fait les codes sont groupés par categories et j'aimerais un truc qui finalement sera:
Table origine:
résultat attendu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ---------------------------------- | user | code | valeur | cat | ---------------------------------- | 1 | 1 | a | cat1 | | 1 | 2 | b | cat1 | | 1 | 3 | c | cat2 | | 2 | 1 | d | cat1 | | 2 | 3 | e | cat2 | ----------------------------------
Les x étant un caractère arbitraire mais nécessaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ------------------------------------------- | user | cat1 | 1 | 2 | cat2 | 3 | ------------------------------------------- | 1 | x | a | b | x | c | | 2 | x | d | NULL | x | e | -------------------------------------------
Et là, le souci c'est que je pense que mon idée de cursor est encore faisable en imbriquant un nouveau mais, niveau performance, ca doit faire ouille.
Voilà, je suis long donc j'espere que vous aurez pris la peine de lire ce post. Si détail(s) il(s) manque(nt), je peux faire deux fois plus long (si si c'est possible
cortex
Partager