Rechercher : dans
Par :

Soustraction sur du langage SQL

Dernière réponse le 4 jun 2009 à 22:21:30 julien37, le 4 jun 2009 à 12:03:49 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP Internet Explorer 7.0

Meilleures réponses pour « Soustraction sur du langage SQL » dans :
Le langage SQL Voir Qu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
PL/SQL - Introduction au langage PL/SQL VoirIntroduction au langage PL/SQL Le langage PL/SQL est un langage L4G (entendez par ce terme un langage de quatrième génération), fournissant une interface procédurale au SGBD Oracle. Le langage PL/SQL intègre parfaitement le langage SQL en lui...
SQL - Jointures VoirExpression des jointures Une jointure (ou θ-jointure) est un produit cartésien de deux tables. On appelle équijointure une θ-jointure dont la qualification est une égalité entre deux colonnes. En SQL, l'expression d'une jointure se...
SQL - Opérations ensemblistes VoirLes opérations ensemblistes Les opérations ensemblistes en SQL, sont celles définies dans l'algèbre relationnelle. Elles sont réalisées grâce aux opérateurs : UNION INTERSECT (ne fait pas partie de la norme SQL et n'est donc pas implémenté dans...

1

NicoDisso, le 4 jun 2009 à 12:07:58

Select montant*-1 from table where sens = 'D' => tu auras les nombres en négatifs sinon pour la premiere question je seche un peu...


Le succès, c'est la hauteur à laquelle vous rebondissez quand vous avez touché le fond.

Répondre à NicoDisso

2

julien37, le 4 jun 2009 à 12:16:48

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

Répondre à julien37

3

chuka, le 4 jun 2009 à 13:16:36

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...
@+ Sur un malentendu, ca peut marcher!!

Répondre à chuka

4

 chuka, le 4 jun 2009 à 22:21:30

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!!
@+ Sur un malentendu, ca peut marcher!!

Répondre à chuka