Créer une requête « PIVOT » en PostgreSQL.
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
Code:
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|
+------------+--------+--------+ |
Table achats
Code:
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 |
+------------+-----------+------------+----------+ |
Résultat voulu
Fourni dans la requête : id_client et langue
Code:
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 |
+------------+---------+---------+---------+---------+ |
Je dois bien avouer que j'ai jamais fait de pivot, je suis un peu perdu.
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.