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,...
Ajouter la langue arabe au clavier français sous Windows VoirPour ajouter le clavier en arabe sous Windows XP il suffit d'aller dans : Démarrer -> Panneau de configuration -> Options régionales et linguistiques Dans l'onglet "Langue" (ou Clavier et langues), cocher la case "Installer les fichiers pour les...
[Programmation] Comment débuter, quel langage? VoirComment débuter, quel langage? Introduction Ceux que l'on peut utiliser Delphi/Pascal Java Python .Net Smalltalk Ceux que l'on peut utiliser à la rigueur C/C++ PHP Ada Lisp/Caml/... Ceux que l'on peut ne pas utiliser
Utiliser des accents et autres caractères spéciaux VoirDans la plupart des langages de programmation, on ne peut utiliser directement les accents et autres caractères non-anglosaxon. La solution est l'unicode, une sorte de code universel. Par exemple pour afficher la chaine de caractères : " là, ça...
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 - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...
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...

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
Collection CommentÇaMarche.net