Soustraction sur du langage SQL

Fermé
julien37 - 4 juin 2009 à 12:03
 Et - 21 juin 2012 à 16:36
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

5 réponses

NicoDisso Messages postés 230 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 22 août 2009 32
4 juin 2009 à 12:07
select montant*-1 from table where sens = 'D' => tu auras les nombres en négatifs sinon pour la premiere question je seche un peu...


1
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
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
4 juin 2009 à 13:16
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...
@+
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
4 juin 2009 à 22:21
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!!
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sum(Decode(Champ Sens, 'D', - Champ Montant, 'C', Champ Montant))
0