Soustraction sur du langage SQL
julien37
-
Et -
Et -
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
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
A voir également:
- Sql soustraction
- Logiciel sql - Télécharger - Bases de données
- Excel soustraction avec condition ✓ - Forum Excel
- Jointure sql ✓ - Forum MySQL
- Soustraction en anglais excel ✓ - Forum Excel
- Sql (+) - Forum Programmation
5 réponses
select montant*-1 from table where sens = 'D' => tu auras les nombres en négatifs sinon pour la premiere question je seche un peu...
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
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
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...
@+
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...
@+
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!!
@+
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!!
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question