Soustraction dans une requete
Résoluje souhaite faire la soustraction de deux lignes dans une meme colonne, est-ce possible dans Access ?
cest pour gerer des releves de compteurs d'eau et calculer le prix a payer par chaque personne de l'immeuble,
jusqu'a maintenant je faisais ca dans excel, assez facile à manipuler, mais je voudrais automatiser cette tache de facon a editer une facture par personne à la date du releve(etat)
mon exemple de requete
nomresident date releve indice compteur consommation prix m3 prix total
dupond 10/01/2018 220
dupond 10/03/2018 225 5 3,00 15,00
dupond 10/05/2018 233 8 3,10 24,80
la colonne consommation, je voudrais faire le calcul une ligne(indice compteur) moins la precedente, le prix M3 je le saisis, et le prix total se calculera tout seul.
merci bien à ceux qui pourront m'aider, je manipule access mais pour des choses simples, style somme, totaux, moyenne, etc
Marie
4 réponses
La problématique porte sur la création d'une requête Access permettant de calculer la consommation en delta entre deux relevés dans une même colonne et de générer automatiquement le prix total. Des échanges techniques proposent d'utiliser des sous-requêtes et des jointures pour obtenir la date précédente et calculer le delta d'indice compteur par nom de copropriété, puis d'intégrer le prix par M3. Des conseils pratiques soulignent aussi l'usage des noms de champs comportant des espaces via des crochets et l'importance de choisir la meilleure approche entre requête simple et sous-requêtes imbriquées. En parallèle, certains indiquent qu'externaliser les tarifs dans une table dédiée simplifie les calculs et qu'il est possible d'apprendre le SQL progressivement pour automatiser la facturation et l'état des relevés.
-
Contributeurbonsoir marie, suggestion de requête:
select c.compteur, cc.dt as du , c.dt as au, c.val-cc.val as delta from cpt as c, (SELECT c1.compteur, c1.dt, min(c2.dt) as mindt2 , c1.val FROM cpt as c1, cpt AS c2 where c1.compteur=c2.compteur and c1.dt < c2.dt group by c1.compteur, c1.dt, c1.val ) as cc where c.compteur=cc.compteur and c.dt=cc.mindt2 order by c.compteur, cc.dt
-
-
Contributeur@debutante66peux-tu partager ton fichier?
-
-
Contributeur@debutante66si tu veux apprendre et donc es prête à bricoler, n'envoie pas ton fichier pour le moment.
as-tu remplacé le texte complet par le texte sql que j'ai proposé?
souvent, en cas d'erreur, le texte erroné est surligné, ou le curseur se trouve proche de l'erreur.
quand la requête fonctionnera, tu pourras soit l'enrichir, soit l'utiliser comme source dans d'autres requetes. -
oui je veux bien bidouiller ... mdr
je viens de remplacer le texte complet par le tien et cela me donne :
le moteur de bases de donnees microsoft acccess ne peut pas trouver la table ou la requete source "cpt" assurez vous qu elle existe et qu elle est correctement orthographiee.
pour info, ma requete s'appelle "calcul consommation"
et mes champs : "nom copro", "date relevé" et "indice compteur".
faudrait peut etre que j'adapte certains mots à ma requete dans ton texte ? mais lesquels ?
-
-
bonjour
a ma connaissance mais tu peux faire 2 colonnes ancien indice et nouvel indice
faire la soustraire dans une troisieme -
Contributeurou bien:
SELECT c.compteur, c.dt, c.val, c.val-cc.val AS delta, M3, M3*(c.val-cc.val) AS prix FROM cpt AS c LEFT JOIN (SELECT c1.compteur, c1.dt, c1.val, min(c2.dt) AS suiv FROM cpt AS c1, cpt AS c2 WHERE c1.compteur=c2.compteur and c1.dt < c2.dt GROUP BY c1.compteur, c1.dt, c1.val) AS cc ON (c.dt=cc.suiv) AND (c.compteur=cc.compteur) ORDER BY c.compteur, cc.dt;
-
je viens de mettre ton texte et il me renvoie toujours le meme message d erreur .
moi je crois que je dois adapter avec le nom reel de mes champs mais je ne vois pas ou ?
que veut dire c.compteur ? c.dt ? c.val ? c1 ? c2 ? cc.compteur ?
comme je ne connais pas le langage sql je suis un peu perdue
comment je peux faire pour t'envoyer mon fichier ? -
Contributeur@debutante66cette nouvelle requête doit être adaptée à tes noms, en effet. je pense qu'elle te donnera un résultat plus proche de ce que tu attends (par rapport à la requête initiale que je t'ai proposée).
je n'utilise pas le fichier que tu as envoyé, je pense que tu apprendras plus si tu fais toi-même. tout m'indique que tu vas bientôt y arriver.
-
-
Contributeurtout autre chose: je pense mieux d'avoir un champ [no copro] au lieu de [Nom Copro] dans la table [saisie des compteurs].