Bonjour.
On m'a demandé de créer une table monitoring qui va afficher des informations provenant d'autres tables.
À un moment, je dois utiliser le contenu d'une des tables en tant que nom de colonne, donc je devrais utiliser un PIVOT.
Ci-dessous un exemple plus parlant et ce à quoi je voudrais arriver.
Table produits
Table achats
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 +------------+--------+--------+ | id_produit | nom_fr | nom_en | +------------+--------+--------+ | 0 | pomme | apple | +------------+--------+--------+ | 1 | pêche | peach | +------------+--------+--------+ | 2 | poire | pear | +------------+--------+--------+ | 3 | abricot| apricot| +------------+--------+--------+
Résultat voulu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 +------------+-----------+------------+----------+ | date | id_client | id_produit | quantité | +------------+-----------+------------+----------+ | 2000-01-01 | A0 | 0 | 3 | +------------+-----------+------------+----------+ | 2000-01-02 | A0 | 0 | 2 | +------------+-----------+------------+----------+ | 2000-01-03 | A0 | 0 | 5 | +------------+-----------+------------+----------+ | 2000-01-03 | A0 | 2 | 2 | +------------+-----------+------------+----------+ | 2000-01-03 | A0 | 0 | 1 | +------------+-----------+------------+----------+ | 2000-01-04 | A0 | 0 | 2 | +------------+-----------+------------+----------+ | 2000-01-04 | A0 | 2 | 3 | +------------+-----------+------------+----------+
Fourni dans la requête : id_client et langue
Je dois bien avouer que j'ai jamais fait de pivot, je suis un peu perdu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 +------------+---------+---------+---------+---------+ | date | pomme | pêche | poire | abricot | +------------+---------+---------+---------+---------+ | 2000-01-01 | 3 | 0 | 0 | 0 | +------------+---------+---------+---------+---------+ | 2000-01-02 | 2 | 0 | 0 | 0 | +------------+---------+---------+---------+---------+ | 2000-01-03 | 6 | 0 | 2 | 0 | +------------+---------+---------+---------+---------+ | 2000-01-04 | 2 | 0 | 3 | 0 | +------------+---------+---------+---------+---------+
Le peu d'exemples que j'ai trouvé en ligne impose de mettre le nom des colonnes "en dur" dans la requête.
Or, ceux-ci peuvent varier, en nombre ou selon la langue.
Est-ce qu'il est possible de mettre dynamiquement les noms des produits et de faire le pivot, le tout en une seule requête ?
Merci (et bonnes fêtes ).
Cordialement.
Partager