Posez votre question Signaler

Soustraction sur du langage SQL

julien37 - Dernière réponse le 4 juin 2009 à 22:21
Bonjour,
je travail sur Query Browser et je fais face à quelques soucis de compréhension d'une requête SQL. En effet, voici mon souci :
Je cherche a faire une soustraction sur des données qui remontent de la comptabilité, comme suit :
Compte Montant Sens
401000 2 000 C
401000 1 000 D
401001 800 C
401001 1 200 D
C étant Créditeur et D étant Débiteur
Je cherche donc si il est possible de faire une soustraction "créditeurs - débiteurs" et çela en fonction du compte pour avoir un solde par compte.
Si ce n'est pas possible, je me demande également s'il est possible d'effectuer une requete qui rendrait négatif les montants débiteurs.
D'autre part je précise que je n'ai pas accès aux données, elle me remonte automatiquement.
Je vous suis très reconnaissant de l'aide que vous allez m'apporter.
Merci d'avance
Lire la suite 

Soustraction sur du langage SQL »

4 réponses
Réponse
+1
moins plus
select montant*-1 from table where sens = 'D' => tu auras les nombres en négatifs sinon pour la premiere question je seche un peu...


Ajouter un commentaire
Réponse
+0
moins plus
Merci de la rapidité de ta réponse.

J'ai tout de même un souci car ce calcul s'effectue dans une requête où il y a d'autres colonnes et déjà des conditions 'where'. Comment dois-je incorporer cette formule dans ma requête?

Merci
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
tu peux essayer un truc du style:(attention c'est pas tres beau...et pas testé....)
select sum(select sum(montant) from ma_table where compte=a.compte and sens='C')-select sum(montant) from ma_table where compte=a.compte and sens='D'), a.compte,"tes autres champs" from ma_table a where "tes conditions"
group by a.compte,"tes autres champs"
Je sais pas si cela marche mais bon... t'as rien à perdre à essayer...
@+
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
bon ben ce que j'ai mis avant ne marche pas....
cela fonctionne (en tout cas chez moi!!)
SELECT SUM(mont),CPT FROM (SELECT CASE WHEN sens='D' THEN SUM(montant)*-1 ELSE SUM(montant) END AS mont,compte AS CPT
FROM ma_table
GROUP BY compte,sens)
GROUP BY CPT
Normalement en collant tes conditions dans la sous requête, et en modifiant le group by,si nécessaire, en conséquence, cela devrait tourner....
J'espere ca pourra t'aider!!
@+
Ajouter un commentaire
Ce document intitulé « Soustraction sur du langage SQL » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?