Bonjour, ça fait quelques jours que je me creuse la tête (j'ai un trou!) sans réussir à trouver la solution, alors j'ai fini par me créer un compte pour vous demander un peu d'aide.
Voila, je tape mes requêtes en postgresql.
J'ai une table dans laquelle j'ai des clients qui me passent une commande chaque année.
Ma table est composée de trois variables, le nom du client, la date de la commande, le montant.
Dans cette table j'ai au moins 12 ans de commandes.
Je souhaite sélectionner les clients dont le montant de la commande sur les trois dernières années (2020, 2021, 2022) est supérieur à 50 000€, et je souhaite afficher ces montant par une colonne représentant chaque année.
Je souhaite également savoir si ces clients ont dépassé ce seuil deux années consécutives.
J'extrais donc l'année à partir de la date de commande pour ne conserver que celles de 2020, 2021 et 2022.
A l'aide d'un CASE WHEN j'affecte le montant à la colonne 2020, 2021 ou 2022.
Puis j'en profite pour tester si 2020 et 2021 ont dépassé le seuil auquel cas on affiche positif dans une colonne 2020_2021, ou 2021 et 2022 ont dépassé le seuil auquel cas on affiche positif dans une colonne 2021_2022.
Problème : j'ai un message d'erreur qui me dit les colonnes 2020, 2021 et 2022 ne sont pas créées donc on ne peut rien y affecter.
Voila mon code :
Et j'obtiens le message d'erreur suivant :
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 DROP TABLE IF EXISTS table_test ; CREATE TABLE table_test AS SELECT num_cli, date_com, mt_com, CASE WHEN EXTRACT(YEAR FROM date_com) = 2020 THEN mt_com ELSE 0 END AS resultat_2020, CASE WHEN EXTRACT(YEAR FROM date_com) = 2021 THEN mt_com ELSE 0 END AS resultat_2021, CASE WHEN EXTRACT(YEAR FROM date_com) = 2022 THEN mt_com ELSE 0 END AS resultat_2022, CASE WHEN resultat_2020 > 50000 AND resultat_2021 > 50000 THEN 'positif' ELSE NULL END AS positif_2020_2021, CASE WHEN resultat_2021 > 50000 AND resultat_2022 > 50000 THEN 'positif' ELSE NULL END AS positif_2021_2022, CASE WHEN positif_2020_2021 = 'positif' AND positif_2021_2022 = 'positif' THEN 'double positif' ELSE NULL END AS double_positif FROM table_comande WHERE EXTRACT(YEAR FROM date_com) IN (2020, 2021, 2022)Alors je soupçonne que la commande n'étant créée qu'en sortie je ne puisse pas travailler dessus? Mais dans ce cas est-ce qu'il faut que je la créée au préalable? Avec une commande de type INSERT INTO?column "positif_2020_2021" does not exist
LINE 34 : WHEN positif_2020_2021 = 'positif' AND positif_2021_2022 =...
Merci par avance pour vos éclairages.
Partager