Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 10/01/2018 17:11:36
- reimic5
- Membre
x en fonction <= a la date
Bonjour,
Merci beaucoup pour votre aide.
J'ai deux table :
La table table1 avec 3 colonnes user, date, budget.
-- Table1 --
U | date | Budget
1 | 01/01/17 | 100
2 | 01/01/17 | 110
3 | 01/01/17 | 101
2 | 15/02/17 | 111
2 | 03/03/17 | 109
3 | 07/06/17 | 102
La table2 avec trois colonnes user, date depense
-- Table2 --
U | date | depense
1 | 04/01/17 | 100
2 | 06/01/17 | 150
1 | 24/02/17 | 130
2 | 20/03/17 | 110
1 | 14/07/17 | 170
3 | 16/08/17 | 180
je souhaiterai avoir la table 2 avec une colonne du budget aloue (< ou = a la date de depense) en fonction des users.
resultat souhaite:
-- resultat --
U | date | depense | budget
1 | 01/17 | 100 | 100
2 | 01/17 | 150 | 110
1 | 02/17 | 130 | 100
2 | 03/17 | 110 | 109
1 | 07/17 | 170 | 100
3 | 08/17 | 180 | 102
je n'y arrive pas, ma formule ne fonctionne pas:
SELECT
to_char((table2.date) ::timestamp with time zone, 'MM/YYYY' ::text) AS date,
table2.depense,
table2.user,
table1.budget
FROM
table1
INNER JOIN table2 ON (public.table1.user = table2.user)
GROUP BY
to_char((table2.date) ::timestamp with time zone, 'MM/YYYY' ::text),
table2.user,
table1.budget
Dernière modification par reimic5 (15/01/2018 17:40:14)
Hors ligne
#2 12/01/2018 15:55:21
- gleu
- Administrateur
Re : x en fonction <= a la date
Que voulez-vous dire par "elle ne fonctionne pas" ? elle renvoie un message d'erreur ? si oui, lequel ? elle ne renvoie pas les bons résultats ? si oui, lesquels ?
Guillaume.
Hors ligne
#3 12/01/2018 16:31:51
- damalaan
- Membre
Re : x en fonction <= a la date
Vos 2 tables semblant identiques, ne faudrait-il pas revoir le modèle :
U
Date
Type (budget ou depense)
Montant
?
Ensuite avec une fonction de fenêtrage, on doit pouvoir travailler facilement sur chaque partition (U)
Hors ligne
#4 12/01/2018 17:24:25
- reimic5
- Membre
Re : x en fonction <= a la date
voici le code et merci :
SELECT
to_char((table2.date) ::timestamp with time zone, 'MM/YYYY' ::text) AS date,
table2.user,
min(table2.depense),
min(table1.budget)
FROM
table1
INNER JOIN
table2 ON public.table1.user = table2.user
and to_char((table2.date) ::timestamp with time zone, 'MM/YYYY' ::text) = to_char((public.table1.date) ::timestamp with time zone, 'MM/YYYY' ::text)
GROUP BY
to_char((table2.date) ::timestamp with time zone, 'MM/YYYY' ::text),
table2.user
Hors ligne
Pages : 1